顺序表集合操作.doc_第1页
顺序表集合操作.doc_第2页
顺序表集合操作.doc_第3页
顺序表集合操作.doc_第4页
顺序表集合操作.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*9、集合操作(分)基本功能要求:()从文件中读入集合数据建立单链表。()分别求出集合的交、并、差。*/#include#include#define MaxSize 33typedef int ElemType;typedef structElemType dataMaxSize+1;int length;SqList;void InitList(SqList *&L)/创建空的顺序表L=(SqList *)malloc(sizeof(SqList);L-length=0;void CreateList(SqList *&L)/向数据表输入数据int i=1,n;printf(Please input the data and end up with 0:n);scanf(%d,&n);L-length=0;while(n!=0 & L-length datai=n;i+;L-length+;scanf(%d,&n);int LengthList(SqList *&L)/顺序表长度return(L-length);int GetElem(SqList *L,int i,ElemType &e)/获取顺序表中的一个元素e=L-datai;if(iL-length)return 0;else return 1;int ListInsert(SqList *&L,int i,ElemType e)/在顺序表中i处插入指定元素eint j;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 *&L,int i,ElemType &e)/删除相同元素int j;if(iL-length)printf(ERROR!);e=L-datai;for(j=i+1;jlength;j+)L-dataj-1=L-dataj;L-length-;void ClearList(SqList *&L)/清除顺序表中重复元素int i,j,e;for(i=1;ilength;i+)for(j=i+1;jlength;j+)if(L-datai!=L-dataj)continue;elseif(L-datai=L-dataj & jlength)ListDelete(L,j,e);j-;elseif(L-datai=L-dataj & j=L-length)ListDelete(L,j,e);void MergeList(SqList *LA,SqList *LB,SqList *&LC)/求两个集合并集int i=1,j=1,k=0;ElemType ai,bj;int LA_len,LB_len;InitList(LC);LA_len=LengthList(LA);LB_len=LengthList(LB);/*while(i= LA_len) & (j= LB_len)/该段备注加上则为按顺序排开的GetElem(LA, i, ai); GetElem(LB, j, bj); if (ai = bj) ListInsert(LC, +k, ai); +i; else ListInsert(LC, +k, bj); +j; */ while (i = LA_len)/向LC添加元素 GetElem(LA, i+, ai); ListInsert(LC, +k, ai); while (j = LB_len) GetElem(LB, j+, bj); ListInsert(LC, +k, bj); ClearList(LC);/清除重复元素printf(The merged list(without order) is:);/显示并集for(i=1;ilength;i+)printf(%3d,LC-datai);printf(n);void CrossList(SqList *LA,SqList *LB,SqList *&LD)/求两个集合的交集InitList(LD);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:);/若无相同元素则交集为空printf(空集n);elseprintf(The crossed list is:);/显示交集for(i=1;idatai);printf(n);int LocateElem(SqList *L,ElemType e)/搜索数值相同元素int i=1;while(ilength &L-datai!=e)i+;if(iL-length)return 0;else return i+1;void DifferList(SqList *LA,SqList *LB,SqList *&LE) /求A-B的差集,即A中存在B中不存在的元素int i,k=0;InitList(LE);for(i=1;ilength;i+)if(!LocateElem(LB,LA-datai)/在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 *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论