- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8、删除相同值的元素 9、逆转 习题:写一算法,将一单链表逆转。要求逆转在原链表 上进行,不允许重新构造一个链表。 五、单链式存储结构下的小结 §2.3.2 循环链表 一、循环单链式存储结构 1、方式:与线性表的单链式存储结构基本相同,只是:单链式存储结构时最后一个元素没有后继,其后继指针为空,现在把它变为指向第一个元素(或头结点)的指针。 a1 a2 ai ai+1 … … an a1 a2 ai ai+1 … … an 2、特点: ☆ 具有单链表的特点; ☆ 从任何一个元素都可以访问整个线性表。 3、虚拟实现: 同单链表的完全一样 一、循环单链式存储结构 二、线性表的各个运算在循环单链存储结构下的虚拟实现 基本与单链表存储结构的相同,但是在处理最后一个元素结点时,要注意! §2.3.2 循环链表 §2.3.3 双向链表 1、方式: 用任意存储空间单元来存放线性表的各个元素,为了能体现元素之间的前驱、后继逻辑关系。在存放每个元素的同时,也存放其前驱、后继元素的信息(即前驱和后继元素的存储地址),即用两个指针来表示元素之间的前驱、后继逻辑关系。存放一个数据元素占用的空间为: 一、双链式存储结构 (a1,a2,…ai,ai+1,…an) a1 a2 … an-1 an la 一、双链式存储结构 记录前驱的地址(指向前驱) 记录后继的地址(指向后继) 一、双链式存储结构 2、特点: ☆ 具有单链表的特点; ☆ 前驱操作简单O(1); ☆ 任何位置插入、删除都简单了。 3、虚拟实现: 二、线性表的各个运算在双链存储结构下的虚拟实现 例题 在双向链表存储结构中,删除p所指的结点时需修改怎样指针? 1、p →next →prior=p →prior; p →prior →next= p →next ; 2、 p →next = p →next →next ; p →next →prior=p; 3、 p →prior →next= p; p →prior = p → prior →prior; 4、 p →prior = p →next →next ; p →next = p → prior →prior; 答案(1) §2.3.4 线性表的循环双链式存储表示 一、循环双链式存储结构 1、方式:同双链式存储结构基本相同,但最后一个元素的后继指针不空,而是指向第一个元素(或头结点);第一个元素的前驱指针不空,而是指向最后一个元素结点。 (a1,a2,…ai,ai+1,…an) a1 … an-1 an la 2、特点: ☆ 相当于两个循环单链 3、虚拟实现: 与双链式完全相同 二、线性表的各个运算在循环双链存储结构下的虚拟 实现 一、循环双链式存储结构 例题 1、在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,应该如何修改指针的操作? 1. q →prior=p; 2. q →next= p →next ; 3. p →next →prior=q; 4. p →next=q; 要点: (1)step1step2 首先要修改待插入结点q的前驱和后继指针,可调换顺序 (2) step3step4 其次要修改p的后继结点的前驱指针,再修改p后继指针,可调换顺序 这两个操作不能颠倒 1. q →prior=p; 2. p →next=q; 3. p →next →prior=q; 4. q →next= p →next ; 1. q →prior=p; 2. p →next=q; 3. q →next= p →next ; 4. p →next →prior=q; 1. p →next=q; 2. q →prior=p; 3. q →next= p →next ; 4. p →next →prior=q; 1. q →prior=p; 2. p →next=q; 3. p →next →prior=q; 4. q →next= p →next ; 1. q →prior=p; 2. p →next=q; 3. q →next= p →next ; 4. p →next →prior=q; 1. p →next=q; 2. q →prior=p; 3. q →next= p →next ; 4. p →next →prior=q; 例题 2、带头结点的双向循环链表L为空的条件是: L==NULL b) L-next-prior ==NULL c) L-prior ==NULL d) L-prior ==L L-ne
文档评论(0)