永发信息网

关于数据结构顺序表求集合交集并集的问题

答案:2  悬赏:60  手机版
解决时间 2021-01-28 03:24
  • 提问者网友:姑娘长的好罪过
  • 2021-01-27 11:49
#include
#define list_init_size 100
#define listincrement 10
typedef struct
{
char elem[80];
int length;
}sqlist;
void creatsq (sqlist *l,char c[],int n)
{
int i;
for(i=0;i<=n;i++)
{
l->elem[i]=c[i];
}
l->length=n;
}
void printsq (sqlist l)
{
int i;
for(i=0;i{
printf("%c",l.elem[i]);
}
}
void bing(sqlist l1,sqlist l2,sqlist *l3)
{
int i,j,k=0;
l3->length=l1.length;
for(i=0;i{
l3->elem[i]=l1.elem[i];
}
for(j=0;j{
while(l2.elem[j]!=l1.elem[k])
{
k++;
if(k>=l3->length)
{
break;
l3->elem[l3->length]=l2.elem[j];
l3->length++;
}
}
k=0;
}
}
void jiao(sqlist l1,sqlist l2,sqlist *l3)
{
int i,j=0,k=0;
for(i=0;i{
while( (jj++;
if(jl3->elem[k++]=l1.elem[i];
}
l3->length=k;
}
void main()
{
sqlist l1,l2,l3;
char c1[80],c2[80];
int i,j,k,n,m;
//输入集合1
printf("请输入集合1的元素个数:\n");
scanf("%d",&i);
printf("请输入集合1的元素:\n");
for (j=0; j{
scanf("%c",&c1[j]);
}
creatsq(&l1,c1,i);
//输入集合2
printf("请输入集合2的元素个数:\n");
scanf("%d",&k);
printf("请输入集合2的元素:\n");
for (n=0; n{
scanf("%c",&c2[n]) ;
}
creatsq(&l2,c2,k);
while(1)
{
printf("请选择需要的功能:1-求交集;2-求并集\n");
scanf("%d",&m);
switch(m)
{
case 1:
{
jiao(l1,l2,&l3);
printsq(l3);
break;
}
case 2:
{
bing(l1,l2,&l3);
printsq(l3);
break;
}
default:printf("error\n");
}
}
}

以上程序,运行的时候总是输出不了结果,不解,真心求助,跪求大神帮忙
最佳答案
  • 五星知识达人网友:琴狂剑也妄
  • 2021-01-27 12:55
#include
#define list_init_size 100
#define listincrement 10
typedef struct
{
char elem[80];
int length;
}sqlist;
//
void creatsq (sqlist *l,char c[],int n)
{
int i;
for(i=0;i<=n;i++)
{
l->elem[i]=c[i];
}
l->length=n;
}
//输出集合的元素
void printsq (sqlist l)
{
int i;
printf("该集合的元素为\n");
for(i=0;i {
printf("%c ",l.elem[i]);
}
printf("\n");
}



void bing(sqlist l1,sqlist l2,sqlist *l3)
{
int i,j,k=0;
l3->length=l1.length;

for(i=0;i {
l3->elem[i]=l1.elem[i];
}

for(i=0;i {
for(j=0;j {
if(l2.elem [i]==l1.elem [j])
break;
}
if(j==l1.length )
l3->elem [l3->length ++]=l2.elem [i];
}


}


void jiao(sqlist l1,sqlist l2,sqlist *l3)
{
int i,j=0,k=0;//
for(i=0;i {
j=0;/////////////////////
while( (j j++;
if(j l3->elem[k++]=l1.elem[i];
}
l3->length=k;
}
////////////
void main()
{
sqlist l1,l2,l3;
char c1[80],c2[80];
int i,j,k,n,m;

//输入集合1
printf("请输入集合1的元素个数:\n");
scanf("%d",&i);
getchar();////////////
for (j=0; j {
printf("请输入集合1的第%d个元素:",j+1);
scanf("%c",&c1[j]);
getchar();//////////////////////////

}
creatsq(&l1,c1,i);
printsq(l1);

//输入集合2
printf("请输入集合2的元素个数:\n");
scanf("%d",&k);
getchar();
for (n=0; n {
printf("请输入集合2的第%d个元素:",n+1);
scanf("%c",&c2[n]) ;
getchar();
}
creatsq(&l2,c2,k);
printsq(l2);
//功能
while(1)
{
printf("请选择需要的功能:1-求交集;2-求并集\n");
scanf("%d",&m);
switch(m)
{
case 1:
{
printf("交集的结果:");
jiao(l1,l2,&l3);
printsq(l3);
break;
}
case 2:
{
printf("并集的结果:");
bing(l1,l2,&l3);
printsq(l3);
break;
}
default:printf("error\n");
}
}

}
全部回答
  • 1楼网友:低音帝王
  • 2021-01-27 13:41
#include #define maxsize 50 typedef struct node { int data[maxsize]; int length; }seqlink; int len1; int len2; int arr[maxsize]; void seqlinkinit(seqlink *l)//初始化 { l->length = -1; } int creatseqlink(seqlink *l)//创建顺序表 { while (1) { if (maxsize-1 < ++l->length) { printf("表满!\n"); return 0; } scanf("%d", &l->data[l->length]); if (0 == l->data[l->length]) { break; } } return l->length; } void a(seqlink *l1, seqlink *l2)//求交集 { int i, j; int count = 0; for (i=0; idata[i] == l2->data[j]) { arr[count++] = l1->data[i]; break; } } } } void b(seqlink *l1, seqlink *l2)//求并集 { int i, j; int num; int flag; int count = 0; for (i=0; idata[i]; } num = count; for (i=0; idata[i]) { flag = 0; break; } } if (1 == flag) { arr[count++] = l2->data[i]; } } } void output(void)//输出 { int i; for (i=0; arr[i]!=0; i++) { printf("%d ", arr[i]); } printf("\n"); } void main(void) { seqlink l1; seqlink l2; seqlinkinit(&l1); seqlinkinit(&l2); printf("请输入集合a:(按0结束输入)\n"); len1 = creatseqlink(&l1); printf("请输入集合b:(按0结束输入)\n"); len2 = creatseqlink(&l2); a(&l1, &l2); printf("a与b交集为:\n"); output(); b(&l1, &l2); printf("a与b并集为:\n"); output(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯