[工学]第二章线性表无0.pptVIP

  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文档。上传文档
查看更多
[工学]第二章线性表无0.ppt

a e b P ListInsert_DuL(L,i,e) p=GetElemP_DuL(L,i-1); //确定插入位置 s=(DuLNode *)malloc(sizeof(DuLNode));s-data=e; s-prior=p; s-next=p-next; p-next-prior=s; p-next=s; s Status ListInsert_DuL(DuLinkList L,int i,ElemType e){ //在带头结点的双向链表L的第i个位置插入e,1≤i≤表长+1 DuLNode *p=L; int j=0; while(pji-1){p=p-next;++j;}//DuLNode *GetElemP_DuL(L,i-1) if(!p||i1) return ERROR; s=(DuLNode *)malloc(sizeof(DuLNode)); if(!s)exit(OVERFLOW); s-data=e; s-prior=p; s-next=p-next; //记:注意分析指针改变 p-next-prior =s; p-next=s; //次序对结果的影响 return OK; }//ListDelete_DuL 从带头结点的双向链表中删除结点 P (1)p-prior-next=p-next; (2)p-next-prior=p-prior; (3) free(p); p=NULL Status ListDelete_DuL(DuLinkList L,int i,ElemType e){ //删除带头结点的双向链表L的第i个元素,1≤i≤ListLength(L) if(!(p=GetElemP_Dul(L,i)))//GetElemP_Dul仿前页实现 return ERROR; e=p-data; p-prior-next=p-next; p-next-prior=p-prior; free(p);p=NULL; //教材未写p=NULL; return OK; }//ListDelete_DuL ListDelete_DuL(L,i,e) //从实际应用出发改进的带头结点的线性链表类型定义 typedef struct LNode{ //结点类型 ElemType data; struct LNode *next; }*Link,*Position//Link与Position均为指向LNode的指针类型 typedef struct{ Link head,tail; //分别为指向头结点和尾结点的指针 int len; }LinkList; //链式存储结构的线性表类型 LinkList La,Lb,Lc; //基于上述改进的单链表存储结构,再添加一些专门针对表头和表尾的操作可提高解题效率。具体操作及其实现选学.ftp中LlinkList采用改进的单链表存储结构,各操作均已实现,课件最后有选学部分的相关内容供参考 实际应用出发改进的单链表 为方便求表长引入表长成员,为方便表尾操作引入尾指针: 小结: 掌握线性结构的特点,掌握线性表的ADT定义,会组合使用线性表基本操作解决复杂问题 掌握顺序表与单链表存储结构定义及基本操作的实现和复杂度,注意作业、汇总表与博客例程 作业:19已知带头结点的单链表元素递增排列,要求删除链表中值大于mink下于maxk的元素。同时分析算法时间复杂度 作业:22编写函数实现带头结点的单链表的就地逆置。同时分析算法时间复杂度 课下习题:2.1—2.10,可参考1-5习题课.ppt 基本操作: 结点类操作 Status MakeNode(Link p,ElemType e); //指针值赋空 void freeNode(Link p); 结构初始化与结构销毁类操作 Status InitList(LinkList L); //开辟头结点,表长赋0,头尾指针指向头结点 Status DestroyList(LinkList L); //释放头结点与元素节点,头尾指针与表长赋0,O(n) 基本操作: 加工型操作 Status InsFirst(LinkList L, Link s);//因L.len要改变故需用L作参数且为引用型参数(书错),注意s为指向结点的指针,表长加1,O(1) Status Append(LinkList L, Link s);//将s所指一串结点接到L末尾,表长与尾指针均要变, 复杂度取决于尾指针和表长的改变 Statu

文档评论(0)

cai + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档