最新整理-数据结构第二章线性表[精品资料].pptVIP

最新整理-数据结构第二章线性表[精品资料].ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最新整理-数据结构第二章线性表[精品资料]

ListDelete在单链表中的实现。 Status ListDelete(LinkList L, int i, ElemType e){ p=L; j=0; while(p-next ji-1){ p=p-next; ++j; } if(!(p-next)||ji-1) return ERROR; q=p-next; p-next=q-next; e=q-data; free(q); return OK; } free(p) 释放所指的结点变量空间。 算法2.11 从表尾到表头逆向建立单链表 的算法 void CreateList(LinkList L, int n){ L=(LinkList)malloc(sizeof(LNode)); L-next=NULL; for(i=n;i0;--i){ p=(LinkList)malloc(sizeof(LNode)); scanf(p-data); p-next=L-next; L-next=p; } } 算法2.12 将两个有序链表并为一个有 序链表 void MergeList(LinkList La, LinkList Lb, LinkList Lc){ pa=La-next; pb=Lb-next; Lc=pc=La; while(papb){ if(pa-data=pb-data){ pc-next=pa; pc=pa; pa=pa-next; } else { pc-next=pb; pc=pb; pb=pb-next;}} pc-next=pa?pa:pb; free(Lb);} 借用一维数组描述的线性链表,称为 静态链表。 #define MAXSIZE 1000 typedef struct{ Elemtype data; int cur; }component, SLinkList[MAXSIZE]; 用游标cur代替指针指示结点在数组 中的相对位置。 数组的第零分量表示头结点。 算法2.13 在静态链表中实现定位函数 LocateElem int LocateElem(SLinkList S, ElemType e){ i=S[0].cur; while(iS[i].data!=e) i=S[i].cur; return i; } 例2.3 假设由终端输入集合元素,先建立 表示集合A的静态链表S,而后在输 入集合B的元素的同时查找S表,若 存在和B相同的元素,则从S表中删 除之,否则将此元素插入S表。 第一步将整个数组空间初始化成一个链表: void InitSpace(SLinkList space){ for(i=0;iMAXSIZE-1;++i) space[i].cur=i+1; space[MAXSIZE-1].cur=0; } 第二步从备用空间取得一个结点: int Malloc(SLinkList space){ i=space[0].cur; if(space[0].cur) space[0].cur=space[i].cur; return i; } 第三步将空闲结点链结到备用链表上: void Free(SLinkList space, int k){ space[k].cur=space[0].cur; space[0].cur=k; } 算法2.17 计算集合(A-B) ∪(B-A) void difference(SLinkList space,int S){ InitSpace(space); S=Malloc(spce); r=S; scanf(m,n); for(j=1;j=m;++j){ i=Malloc(space); scanf(space[i].data); space[r].cur=i; r=i; } space[r].cur=0; for(j=1;j=

文档评论(0)

***** + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档