- 1、本文档共57页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章线性表(无答案)
2.3.3 双向(循环)链表double linked (circular)list prior data next 双向链表结点结构 带头结点的双向循环链表 L L 空的双向循环链表 L 空的双向链表 ∧ ∧ ∧ ∧ 带头结点的双向链表 L //---线性表的双向(循环)链表存储结构--- typedef struct DuLNode{ ElemType data; struct DuLNode *prior; struct DuLNode *next; }DuLNode,*DuLinkList; //双向链表有利于访问前驱结点,注意分析复杂度提升多少? 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中有改进的单链表代码 ,作业不能照抄,课件最后有选学部分的相关内容供参考 实际应用出发改进的单链表 为方便求表长引入表长成员,为方便表尾操作引入尾指针: 基本操作: 结点类操作 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 Ap
您可能关注的文档
- 第二章 胶凝材料.ppt
- 第二章 蜂窝概念--系统设计基础.ppt
- 第二章 红外光谱2.ppt
- 第二章(四) 四、五、六、七 重复法、正反、褒贬、形象.ppt
- 第二章 酶 2.ppt
- 第二章 热镀锌理论.ppt
- 第二章 网络化制造的范式2.ppt
- 第二章+启蒙时代的新闻事业+7.ppt
- 第二章--石灰.ppt
- 第二章 高分子试剂 2.ppt
- 2025年中国马吲哚行业市场发展前景及发展趋势与投资战略研究报告.docx
- 2025年中国皮带秤配料系统行业市场发展前景及发展趋势与投资战略研究报告.docx
- 2025年中国压片机真空加料机行业市场发展前景及发展趋势与投资战略研究报告.docx
- 2025年中国PVC净化手套行业市场发展前景及发展趋势与投资战略研究报告.docx
- 2025年中国巴士车铝合金型材行业市场发展前景及发展趋势与投资战略研究报告.docx
- 四川省达州市2025年高中阶段学校招生统一考试暨初中学业水平考试精品.pdf
- 掺混肥项目绩效评估报告.docx
- 国开大学2025春土木工程本科《混凝土结构设计原理》形考任务一答案.pdf
- 施老板初一期中考试卷宁夏l2pkxe3t.pdf
- 国开形成性考核20253《建筑力学》形考任务(2)试题及答案.pdf
文档评论(0)