1、/*9、集合操作(分)基本功能要求:()从文件中读入集合数据建立单链表。()分别求出集合的交、并、差。*/#include#include#define MaxSize 33typedef int ElemType;typedef structElemType dataMaxSize+1;int length;SqList;void InitList(SqList *L-length=0;void CreateList(SqList *printf(“Please input the data and end up with 0:n“);scanf(“%d“,L-length=0;while(
2、n!=0 i+;L-length+;scanf(“%d“,int LengthList(SqList *int GetElem(SqList *L,int i,ElemType if(iL-length)return 0;else return 1;int ListInsert(SqList *if(iL-length+1 | L-length=MaxSize)return 0;for(j=L-length;j=i;j-)L-dataj+1=L-dataj;L-datai=e;L-length+;return 1;void ListDelete(SqList *if(iL-length)pri
3、ntf(“ERROR!“);e=L-datai;for(j=i+1;jlength;j+)L-dataj-1=L-dataj;L-length-;void ClearList(SqList *for(i=1;ilength;i+)for(j=i+1;jlength;j+)if(L-datai!=L-dataj)continue;elseif(L-datai=L-dataj j-;elseif(L-datai=L-dataj void MergeList(SqList *LA,SqList *LB,SqList *ElemType ai,bj;int LA_len,LB_len;InitList
4、(LC);LA_len=LengthList(LA);LB_len=LengthList(LB);/*while(ilength;i+)printf(“%3d“,LC-datai);printf(“n“);void CrossList(SqList *LA,SqList *LB,SqList *int i,j,k=0;for(i=1;ilength;i+)for(j=1;jlength;j+)if(LA-datai=LB-dataj)ListInsert(LD,+k,LA-datai);if(LD-length=0)printf(“The crossed list is:“); /若无相同元素
5、则交集为空printf(“空集n“);elseprintf(“The crossed list is:“); /显示交集for(i=1;idatai);printf(“n“);int LocateElem(SqList *L,ElemType e) /搜索数值相同元素int i=1;while(ilength if(iL-length)return 0;else return i+1;void DifferList(SqList *LA,SqList *LB,SqList *InitList(LE);for(i=1;ilength;i+)if(!LocateElem(LB,LA-datai)
6、/在LB中搜索数值不相同的元素ListInsert(LE,+k,LA-datai);ClearList(LE);printf(“The defferd list (A-B) is:“);for(i=1;ilength;i+)printf(“%3d“,LE-datai);printf(“n“);void main()SqList *LA;SqList *LB;SqList *LC;SqList *LD;SqList *LE;InitList(LA);CreateList(LA);InitList(LB);CreateList(LB);MergeList(LA,LB,LC);CrossList(LA,LB,LD);DifferList(LA,LB,LE);七、实验结果截图: