知识大全 数据结构之线性表的链式存储[1]
Posted 结点
篇首语:不患人之不己知,患不知人也。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构之线性表的链式存储[1]相关的知识,希望对你有一定的参考价值。
顺序表的存贮特点是利用物理上的相邻关系表达出逻辑上的前驱和后继关系 它要求用连续的存储单元顺序存储线性表中各元素 因此 对顺序表进行插入和删除时需要通过移动数据元素来实现线性表的逻辑上的相邻关系 从而影响其运行效率 本节介绍线性表的另一种存储形式——链式存储结构 它不需要用地址连续的存储单元来实现 而是通过 链 建立起数据元素之间的次序关系 因此它不要求逻辑上相邻的两个数据元素在物理结构上也相邻 在插入和删除时无需移动元素 从而提高其运行效率 链式存储结构主要有 单链表 循环链表 双向链表 静态链表等几种形式
单链表
链表是通过一组任意的存储单元(可以连续也可不连续)来存储线性表中的数据元素 根据线性表的逻辑定义 单链表的存储单元不仅能够存储元素 而且要求能表达元素与元素之间的线性关系 对数据元素ei而言 除存放数据元素自身的信息ei之外 还需要存放后继元素ei+ 所在存贮单元的地址 这两部分信息组成一个 结点 每个结点包括两个域 数据域——存放数据元素本身的信息;指针域——存放其后继结点的地址 结点的结构如图 所示 因此n个元素的线性表通过每个结点的指针域构成了一个 链条 称之为链表 因为每个结点中只有一个指向后继的指针 所以称其为单链表 为了访问单链表 我们只要知道第一个结点地址就能访问第一个元素 通过第一个元素的指针域得到第二个结点的地址 …… 以此类推可以访问所有元素 这样称第一个元素的地址为 头指针
例如 假设有线性表(A B C D E F G H)对应的链式存储结构如图 所示 头指针为 H 最后一个结点没有后继 其指针域必需置空(以NULL表示) 表明此表到此结束 这样就可以从第一个结点的地址开始 顺籐摸瓜 找到每个结点
cha138/Article/program/sjjg/201311/23375相关参考
> cha138/Article/program/sjjg/201311/23374
链表的每个元素构成一个结点结点定义如下 Typedefstructnode DataTypedata;/*每个元素数据信息*/ structnode*next;/*存放后继元素的地址*/
单链表的运算 建立单链表 假设线性表中结点的数据类型是字符我们逐个输入这些字符型的结点并以换行符\\n为输入条件结束标志符动态地建立单链表 的常用方法有如下两种 ()头插法建表 ①算法思
插入运算 ()思想方法 插入运算是将值为x的新结点插入到表的第i个结点的位置上即插入到ai与ai之间 具体步骤 ()找到ai存储位置p ()生成一个数据域为x的新结点*s ()令结点*
()尾插法建表 ①算法思路 从一个空表开始重复读入数据生成新结点将读入数据存放在新结点的数据域中然后将新结点插入到当前链表的表尾上直到读入结束标志为止 > 具体方法【参见动画演示】 注意
单链表的查找运算 ()按序号查找 ①链表不是随机存取结构 在链表中即使知道被访问结点的序号i也不能像顺序表中那样直接按序号i访问结点而只能从链表的头指针出发顺链域 next逐个结点往下搜索
()尾插法建带头结点的单链表 ①头结点及作用 头结点是在链表的开始结点之前附加一个结点它具有两个优点: ⒈由于开始结点的位置被存放在头结点的指针域中所以在链表的第一个位置上的操作就和在表的其
单链表 链接存储方法 链接方式存储的线性表简称为链表(LinkedList) 链表的具体存储表示为 ①用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的也可以是不连续的)
二知识点解析 线性表 线性表是一种最简单的数据结构在线性表方面主要考查线性表的定义和基本操作线性表的实现在线性表实现方面要掌握的是线性表的存储结构包括顺序存储结构和链式存储结构特别是链式存储结
线性表的顺序存储是线性表的一种最简单最直接的存储结构它是用内存中的一段地址连续的存储空间顺序存放线性表的每一个元素用这种存储形式存储的线性表我们称其为顺序表在顺序表中用内存中地址的线性关系表示线性