读书频道 > 网站 > 网页设计 > 二级c语言程序设计
2.双向链表的结构及其基本运算
14-02-08    奋斗的小年轻
收藏    我要投稿   

本文所属图书 > 二级c语言程序设计

本书由希赛教育等考学院组织编写,作为全国计算机等级考试二级的辅导和培训指定教程。书中内容紧扣全国计算机等级考试2014年考试大纲,通过对历年试题进行科学分析、研究、总结、提炼而成。书中内容全面实用,涵立即去当当网订购

双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向直接后继节点和直接前驱节点,如图1-5所示。所以,从双向链表中的任意一个节点开始,都可以很方便地访问它的前驱节点和后继节点。

 

(1)双向链表的基本运算

1)插入:在双向链表的第i个元素前插入一个新节点的时候,首先,找到待插入的位置,用指针p指向该节点;然后,将新节点的前驱指针指向p节点的前一个节点;之后,将p节点的前一个节点的后驱指针指向新的节点;接下来,将新节点的后驱指针指向p节点;最后,将p节点的前驱指针指向新节点。

2)删除:在双向链表中删除一个节点时,可用指针p指向该节点。首先,将p节点的前一个节点的Next指向p节点的下一个节点;然后,将p的下一个节点的前驱指针指向p的上一个节点。

(2)双链表的结构及其基本运算

在前面所讨论的线性链表中,其插入与删除的运算虽然比较方便,但还存在一个问题,在运算过程中对于空表和对第一个节点的处理必须单独考虑,使空表与非空表的运算不统一。

因此,可以考虑建立这样的链表,具有单链表的特征,但又不需要增加额外的存储空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活。从单链表可知,最后一个节点的指针域为NULL,表示单链表已经结束。如果将单链表最后一个节点的指针域改为存放链表中头节点(或第一个节点)的地址,就使得整个链表构成一个环,又没有增加额外的存储空间,而满足这样条件的链表叫循环链表。

循环链表具有以下两个特点:

1)在循环链表中增加了一个表头节点,其数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的节点。循环链表的头指针指向表头节点。

2)循环链表中最后一个节点的指针域不是空,而是指向表头节点。即在循环链表中,所有节点的指针构成了一个环状链。

在循环链表中,只要指出表中任何一个节点的位置,就可以从它出发访问到表中其他所有的节点,而线性单链表做不到这一点。

由于在循环链表中设置了一个表头节点,因此,在任何情况下,循环链表中至少有一个节点存在,从而使空表的运算与非空表统一。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站