- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二数构章基本结据运及算主讲:胡云琴公安海警学院第1页,共97页。第 2 章 基本数据结构及运算2.5 数组2.6 树与二叉树2.7 图2.1 数据结构的基本概念2.2线性表及其顺序存储结构2.3线性链表2.4线性表的索引存储结构 第2页,共97页。复 习提问1:线性表顺序存储结构具有哪些优点?1)线性表顺序存储结构具有简单、运算方便等优点,随机存取(时间复杂度为O(1));2)无需为表示表中元素之间的逻辑关系而增加额外的存储空间;3)适合小规模、长度固定的线性表第3页,共97页。2.线性表顺序存储结构具有哪些缺点?在插入、删除时要移动大量的节点,效率低表的大小固定,容量难扩充,易出现上溢原因:顺序存储的存储结构与逻辑结构是一致的。解决方法:突破离散存放用指针来表示元素之间的关系。 ?引入线性链表第4页,共97页。链接存储的线性表用链表实现线性表(非连续存储)线性表元素:a1、a2、a3、a4....链表链点a1a2a3a4线性关系:指针域,指针关系第5页,共97页。head 1249 1356 1475 B C D 1356 1475 1021NULL链表概述:链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。“头指针”,以变量head表示,是线性表中第一个数据元素的存储地址;每个结点都应包括两部分:用户需要用的实际数据和下一结点的地址(指针域);最后一个结点,该结点的指针域不再指向其他结点,它称为表尾,它的指针域放一个NULL(表示空地址),链表到此结束。 第6页,共97页。2.3.1 线性链表的基本概念2.3.2 线性链表的基本运算2.3.3 带链的栈与队列2.3.4 循环链表2.3.5 多项式的表示与运算线性链表2.3第7页,共97页。2.3.1 线性链表的基本概念(1)定义:采用链式存储结构的线性表称为链表 ,其采用一组任意的存储单元来存放线性表的数据元素(可零散的分布于内存单元的任何位置上)。特点:结点之间可以连续,可以不连续存储结点的逻辑顺序与物理顺序可以不一致表可扩充第8页,共97页。(2) 结点(Node)组成数据域指针域数据域——存储数据元素本身指针域——存储下一元素的存储位置 通过指针域,不论结点的物理次序如何,都可将其按逻辑顺序依次链接在一起构成线性表。第9页,共97页。H 赵钱孙李周吴郑王^线性表顺序存储与链表存储比较结点 链表 存储地址 存储状态 0001李 0007钱 0013孙 0019王 0025吴 0031赵 0037郑 0043周 0043 0013 0001 NULL 0037 0007 0019 0025顺序表存储地址 存储状态 0031赵 0033钱 0035孙 0037李 0039周 0041吴 0043郑 0045王 数据域 指针域 链表 头指针 H 0031 链指针第10页,共97页。05U17X23V31Y47Z例1: 线性表具有两种存储方式,即顺序方式和链接方式。现有一个具有五个元素的线性表L={23,17,47,05,31},若它以链接方式存储在下列100~119号地址空间中,每个结点由数据(占2个字节)和指针(占2个字节)组成,如下图所示。 其中指针X,Y,Z的值分别为多少?该线性表的首结点起始地址为多少?末结点的起始地址为多少?100108112116119104答:X= Y= Z= 首址=末址=。116NULL(0)100112108第11页,共97页。(3)链表分类①单链表:只设置一个指向后继结点地址的指针域。②循环链表:将其首尾相接构成一个环状结构。③双向链表:有两个指针域,分别指向本结点的前驱结点和后继结点的链表。第12页,共97页。2.3.2 线性链表(单链表)的基本运算(1)定义:所有结点的指针域中只包含一个指针(存储直接后继结点的存储位置)的链表。单链表常用头指针来命名,如 La, Head.头指针空指针头指针a1a2an^······头结点带头结点的单链表第13页,共97页。… a1a2an^L ^L (2)头结点 在单链表的第一个结点之前人为地附设的一个结点。 不存放任何数据 数据域 存放附加信息(链表的结点个数等)头结点 指针域 存放第一个结点的地址 (若线性表为空表,则“空”,用 ^ 表示。) 头指针存放头结点的地址,指向链表中第一个结点(或为头结点或第一个元素)的指针。 头指针 头结点第14页,共97页
文档评论(0)