数据结构 第2章-2.3线性表的链式存储结构及其运算.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构 第2章-2.3线性表的链式存储结构及其运算.ppt》由会员分享,可在线阅读,更多相关《数据结构 第2章-2.3线性表的链式存储结构及其运算.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算一、单一、单链表的链表的存储结构存储结构二、二、单单 链表的操作实现链表的操作实现三、三、链表的运算效率分析链表的运算效率分析12.3 线性表的链式表示和实现 线性表的顺序表示的特点是用物理位置上的邻接关系来表示结点间的逻辑关系,这一特点使我们可以随机存取表中的任一结点,但它也使得插入和删除操作会移动大量的结点.为避免大量结点的移动,我们介绍线性表的另一种存储方式,链式存储结构,简称为链表(Linked List)。22.3.1 线性链表链表是指用一组任意的存储单元来依次存放线性表的结点,特点:这组存储单元即可以是连续的,也可以是
2、不连续的,甚至是零散分布在内存中的任意位置上的。链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息,这个信息称为指针(pointer)或链(link)。这两部分组成了链表中的结点结构:datalink3 其中:data域是数据域,用来存放结点的值。next是指针域(亦称链域),用来存放结点的直接后继的地址(或位置)。链表正是通过每个结点的链域将线性表的n个结点按其逻辑次序链接在一起的。由于上述链表的每一个结只有一个链域,故将这种链表称为单链表(Single Linked)。4、单链式及表示方法、单链式及
3、表示方法(1)单单链链表表:构构成成链链表表的的结结点点只只有有一一个个指指向向直直接接后后继继结结点点的的指指针针。其其结结构构特特点点:逻逻辑辑上上相相邻邻的的数数据据元元素素在在物物理理上上不一定相邻。不一定相邻。如何实现?通过指针指针指针指针来实现!让每个存储结点都包含两部分:数据域和指针域让每个存储结点都包含两部分:数据域和指针域指针域指针域数据域数据域nextdatadata或或样式:样式:数据域:存储数据域:存储元素数值数据元素数值数据指针域:存储直接后继的指针域:存储直接后继的存储位置存储位置设计思想:牺牲空间效率换取时间效率设计思想:牺牲空间效率换取时间效率设计思想:牺牲空间
4、效率换取时间效率设计思想:牺牲空间效率换取时间效率一、一、单单链表的链表的存储结构存储结构5定义单链表结点的结构体如下定义单链表结点的结构体如下:typedef struct Node DataType data;struct Node*next;SLNode;其中其中,datadata域域用来存放数据元素用来存放数据元素,nextnext域域用来存放指向下用来存放指向下一个结点的指针。一个结点的指针。6例:请画出例:请画出2626个英文字母表的链式存储结构个英文字母表的链式存储结构。该该字母表在内存中链式存放的样式举例如下:字母表在内存中链式存放的样式举例如下:解:解:该字母表的逻辑结构为:
5、该字母表的逻辑结构为:(a,b,y,za,b,y,z)链表存放示意图如下:链表存放示意图如下:a1heada2/an讨论讨论1:每个存储结点都包含两部分:数据域和:每个存储结点都包含两部分:数据域和 。讨论讨论2:在单链表中,除了首元结点外,任一结点的存储位置在单链表中,除了首元结点外,任一结点的存储位置 由由 指示。指示。其直接前驱结点的链域的值其直接前驱结点的链域的值指针域指针域(链域链域)71)结点:)结点:数据元素的存储映像。由数据域和指针域两部分组成;数据元素的存储映像。由数据域和指针域两部分组成;2)链表:)链表:n n 个结点由指针链组成一个链表。它是线性表的链式个结点由指针链组
6、成一个链表。它是线性表的链式存储映像存储映像,称为线性表的链式存储结构称为线性表的链式存储结构。3)单链表、双链表、多链表、循环链表)单链表、双链表、多链表、循环链表:结点只有一个指针域的链表,称为结点只有一个指针域的链表,称为单链表单链表或或线性链表线性链表;有两个指针域的链表,称为有两个指针域的链表,称为双链表双链表(但未必是双向链表);(但未必是双向链表);有多个指针域的链表,称为有多个指针域的链表,称为多链表多链表;首尾相接的链表称为首尾相接的链表称为循环链表循环链表。a1heada2an循环链表循环链表示意图:示意图:headhead(2)与链式存储有关的术语:与链式存储有关的术语:
7、84)头指针、头结点和首元结点的区别)头指针、头结点和首元结点的区别头指针头指针头结点头结点首元结点首元结点a1heada2infoan头指针头指针是指向链表中第一个结点(或为头结点、或为首元是指向链表中第一个结点(或为头结点、或为首元结点)的指针;结点)的指针;头结点头结点是在链表的首元结点之前附设的一个结点;数据域是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息,它不计入表长度。内只放空表标志和表长等信息,它不计入表长度。首元结点首元结点是指链表中存储线性表第一个数据元素是指链表中存储线性表第一个数据元素a a的结点。的结点。示意图如下:示意图如下:9答:答:讨论1.
8、在链表中设置头结点有什么好处?在链表中设置头结点有什么好处?讨论2.如何表示空表?如何表示空表?头结点头结点即在链表的首元结点之前附设的一个结点,该结即在链表的首元结点之前附设的一个结点,该结点的点的数据域可以为空,也可存放数据域可以为空,也可存放数据域可以为空,也可存放数据域可以为空,也可存放表长度表长度表长度表长度等附加信息,其作用是等附加信息,其作用是为了对链表进行操作时,可以对空表、非空表的情况以及对首为了对链表进行操作时,可以对空表、非空表的情况以及对首元结点进行统一处理,编程更方便。元结点进行统一处理,编程更方便。答:答:无头结点时,当头指针的值为空时表示空表;无头结点时,当头指针
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第2章-2.3线性表的链式存储结构及其运算 2.3 线性 链式 存储 结构 及其 运算
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内