- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第二章(下)线性表
数据结构第二章(下)线性表
数据结构
北京邮电大学信息安全中心
武斌
母版副本1
上次课内容
.了解线性表的概念及其逻辑结构特性
.理解顺序存储结构的描述方法
.顺序表的基本操作及算法实现
.顺序表的优缺点
上次课(线性表上)内容:
母版副本1
本次课程学习目标
.掌握线性链表的存储结构
.理解链式存储结构的描述方法
.掌握线性链表的算法实现
.分析链式存储结构的时间复杂度
学习完本次课程,您应该能够:
母版副本1
线性表的链式表示和表现
2.1 线性表的类型定义
2.2 线性表的顺序表示和表现
2.3 线性表的链式表示与实现
2.4 一元多项式的表示及相加
2.5 有序表dian3
dian3
dian3
dian
dian3
母版副本1
单链表和指针
.线性表的链式存储表示的特点是用一组任意的存储单元存储线性表
的数据元素。
.这组存储单元可以是连续的,也可以是不连续的
.因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的
逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需
存储一个指示其直接后继的信息(即直接后继的存储位置)。
.这两部分信息组成一个“结点”(如下图所示),表示线性表中一个数
据元素。
数据域data
指针域next
母版副本1
单链表和指针
.由分别表示a1, a2,…, an的N 个结点依次相链构成的链表,
称为线性表的链式存储表示。
.由于此类链表的每个结点中只包含一个指针域,故又称单
链表或线性链表,如下图所示。
a1
a2an∧
头指针
空指针
母版副本1
单链表和指针
.和顺序表类似,在链式存储结构中仍以第一个数据元素的
存储地址作为线性表的基地址,通常称它为头指针,线性
表中所有数据元素都可以从头指针出发找到。
.因为线性表的最后一个数据元素没有后继,因此,在单链
表中最后一个结点中的“指针”是一个特殊的值“NULL”
(在图上用∧表示),通常称它为“空指针”。
母版副本1
.为了便于处理一些特殊情况,在第一个结点之前附加一个“头结
点”,令该结点中指针域的指针指向第一个元素结点,并令头指
针指向头结点,如下图所示。
.注意:若线性表为空,在不带头结点的情况下,头指针为空
(NULL),但在带头结点的情况下,链表的头指针不为空,而是其
头结点中指针域的指针为空,如下图所示。
单链表和指针
头结点
a1
a2an ∧
头指针
空指针
头结点
头指针
∧
线性表为空时,
头结点的指针域为空
母版副本1
单链表和指针
.用C语言中的“结构指针”来描述链表结构
typedefstructLNode
{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
若设LNode*p,*q;
LinkListH;
则p,q和H均为以上定义的指针型变量。若p的值非空,则表明p
指向某个结点,p-data表示p所指结点中的数据域,p-next表示p
所指结点中的指针域,若非空,则指向其“后继”结点。
母版副本1
.指针型变量只能作同类型的指针赋值与比较操作。并且,指针型
变量的“值”除了由同类型的指针变量赋值得到外,都必须用C
语言中的动态分配函数得到。
.例如,p=newLNode;表示在运行时刻系统动态生成了一个
LNode类型的结点,并令指针p“指向”该结点。
.反之,当指针p所指结点不再使用,可用deletep,释放此结点空
间。
.链表是一个进行动态存储管理的结构,因此在初始化时不需要按
照线性表实际所需最大容量进行预分配。
单链表和指针
母版副本1
单链表中基本操作的实现
.一、初始化操作
.初始化建一个空的链表即为建立一个只有头结点的链表。
.算法2.12
voidInitList(LinkListL)
{//创建一个带头结点的空链表,L为指向头结点的指针
L=newLNode;
if(!L)exit(1);//存储空间分配失败
L-next=NULL;
}//InitList
.此算法的时间复杂度为O(1)。
母版副本1
单链表中基本操作的实现
.二、销毁结构操作
.算法2.13
voidDestroyList(LinkListL)
{//销毁以L为头指针的单链表,释放链表中所有结点空间
LinkList p = L;
while(p)
{pTemp = p;
p=p-next;
deletepTemp;
}//whil
您可能关注的文档
最近下载
- 江苏2026届高三语文复习:写作课时作业.doc VIP
- 第3课《雕塑着色变彩身》-2025-2026学年岭南美版(2024)美术新教材八年级上册.pptx VIP
- 肾上腺囊肿的护理业务学习.pptx VIP
- 冀教版七年级上册数学精品教学课件 第五章 一元一次方程 项目学习——主题活动(一) 做个小小会计师.ppt VIP
- 临时用电及防爆-授课版.pdf VIP
- CH3.5.5.11自研软件网络安全研究报告.doc VIP
- 自动扶梯调试手册YSTS-0001-C.docx VIP
- 2022年历史学研究发展报告.docx VIP
- T_CITS 233-2025 液相色谱-质谱联用用于脂溶性维生素检测通用技术要求.pdf VIP
- 中建建筑给排水工程施工方案.pdf VIP
文档评论(0)