首先顺序表中基本操作
#define MaxSize 100
#define true 1
#define false 0
typedef struct{
int *elem;
int length;
}SqList;
void InitList(SqList *L){
(*L).elem=(int*)malloc(MaxSize*sizeof(int));
(*L).length=0;
}
int ListEmpty(SqList L){
if(L.length==0)
return false;
return true;
}
int GetElem(SqList L,int n){
if(n<1||n>L.length)
return false;
int outnum=L.elem[n-1];
return outnum;
}
int LocateElem(SqList L,int i){
int num=0;
for(num;num<L.length;num++){
if(i==L.elem[num])
return true;
}
return false;
}
void TrverList(SqList L){
int i=0;
for(i;i<L.length;i++)
printf("%d\n",(L.elem[i]));
}
int ListInsert(SqList *L,int i,int e){
if(i>(*L).length+1||i<1)
return false;
int num=(*L).length;
for(num;num>i-1;num--){
(*L).elem[num]=(*L).elem[num-1];
}
(*L).elem[i-1]=e;
(*L).length++;
//return true;
}
int ListLength(SqList L){
return L.length;
}实现两个集合相加的函数
void MergeList(SqList *l1,SqList l2){
//集合A B 合并
int alength=ListLength(*l1);
int blength=ListLength(l2);
int num=1,num2=0;
for(num;num<=blength;num++){
int outnum=GetElem(l2,num);
if(!LocateElem(*l1,outnum)){
ListInsert(l1,l1->length+1,outnum);
//printf("l.length=%d",l1->length);
}
}
}主函数
int main()
{
SqList l,n;
SqList *s1=&l;
SqList *s2=&n;
InitList(s1);
InitList(s2);
int i=1,k=1;
int la=0,lb=0;
printf("集合A的长度为:");
scanf("%d",&la);
printf("请输入集合A的值");
for(i;i<=la;i++){
int d=0;
scanf("%d",&d);
ListInsert(s1,i,d);
}
TrverList(*s1);
printf("集合B的长度为:");
scanf("%d",&lb);
printf("请输入集合B的值");
for(k;k<=lb;k++){
int e=0;
scanf("%d",&e);
ListInsert(s2,k,e);
}
TrverList(*s2);
MergeList(s1,*s2);
printf("输出集合A的值\n");
TrverList(*s1);
return 0;
}测试结果
关于GetElem函数:
int GetElem(SqList L,int n,int* e){
if(n<1||n>L.length)
return false;
*e=L.elem[n-1];
return true;
}
这样写的时候输出一直不正确,改了一下方法才能输出。可能是指针问题 翻一下资料在修改
版权声明:本文为qq_39394276原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。