Help 帮我一下
问题描述
已知A、B和C为3个递增有序的线性表(非空),现要求对A表作如下操作:删去那些既在B表中出现又在C表中出现的元素。
要求:用顺序表实现。
输入
输入有6行:
第1行、第2行分别为线性表A的长度n1和n1个数据序列
第3行、第4行分别为线性表B的长度n2和n2个数据序列
第5行、第6行分别为线性表C的长度n3和n3个数据序列
输出
输出按要求处理后的线性表A的内容。
每个数据后面有一个空格,输完以后换行。
如果删除后的线性表为空,则输出 List is empty!输入样列
3
2 3 4
3
2 5 6
3
2 8 7
输出样例
3 4
#include<stdio.h>
#defineMAXSIZE 1000
typedef int ElemType;
typedef struct{
ElemType elem[MAXSIZE];
int last;
}SeqList;
void CreatList(SeqList *L,int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&(*L).elem[i]);
(*L).last=n-1;
}
SeqList DeleteList(SeqList L,int e)
{
int k,i;
for(k=0;k<=L.last;k++)
{
if(L.elem[k]==e)
{
for(i=k;i<=L.last;i++)
L.elem[i]=L.elem[i+1];
}
}
L.last--;
return L;
}
SeqList SameList(SeqList La,SeqList Lb,SeqList Lc)
{
int i,j,k;
for(i=0;i<=La.last;i++)
{
for(j=0;j<=Lb.last;j++)
{
if(La.elem[i]==Lb.elem[j])
{
for(k=0;k<=Lc.last;k++)
{
if(La.elem[i]==Lc.elem[k]){
La=DeleteList(La,La.elem[i]);
i--;}
}
}
}
}
return La;
}
void output(SeqList L)
{
int i;
if(L.last<0)
printf("List is empty!\n");
else{
for(i=0;i<=L.last;i++)
printf("%d ",L.elem[i]);
printf("\n");
}
}
int main()
{
int n1,n2,n3;
SeqList La,Lb,Lc;
scanf("%d",&n1);
CreatList(&La,n1);
scanf("%d",&n2);
CreatList(&Lb,n2);
scanf("%d",&n3);
CreatList(&Lc,n3);
La=SameList(La,Lb,Lc);
output(La);
return 0;
}
哪里错了
[解决办法]
没发现有错啊
[解决办法]
没发现有错啊
[解决办法]
程序运行正常!