chapt线性表二.pptVIP

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 线性表 线性表概念及其逻辑结构 线性表的存储结构 顺序存储 链式存储 数组 一维数组 结构数组 二维数组 链表 单链表 双链表 循环链表 静态链表 线性表应用实例 有序线性表 线性表(二) 链表 单链表 双链表 循环链表 静态链表 线性表应用实例 有序线性表 §4 链表 具备链式存储结构的线性表也可称之为链表。 链表串联的方式通常有两种: 一种是利用数组结构串联的有序列表:利用两个数组,一个存放数据,另一个存放链接关系。 另一种是以结点形式串接的链表,通常我们所指的链表就是这种动态内存配置的链表。 结点(node):数据元素的存储映像,包含数据域和指针域信息。 数据域:存储数据元素的域称作数据域, 指针域(链域):存储直接后继元素存储位置的域称作指针域。指针域中存储的信息称作指针或链。 n个结点链接成一个链表,即为线性表(a1 , a2 , a3 , …, an)的链式存储结构。 一、单链表 整个链表的存取必须从头指针开始进行,头指针指示链表中的首结点(第一个元素的存储映像)的存储位置,这里用Head表示;由于最后一个元素没有直接后继,最后一个结点的指针是NULL(指针为空),表示这是链表的结尾。 由于取得任意一个数据元素都必须从头指针出发寻找,所以单链表是非随机存储的存储结构。 这种单链表数据元素之间的逻辑关系是由结点中的指针指示的,只要确定头指针的位置,就可以确定链表中所有元素的位置。换句话说,单链表由头指针唯一确定。可以借助高级语言中的“指针”数据类型来描述线性链表。 链式结构的存储效率: 存储密度=结点数据信息所占存储空间 / 结点结构所占全部空间 1、单链表内结点的配置 链表的内存空间动态配置,在程序运行过程中才向系统配置所需空间。 使用链表之前,先要定义出每一个结点的数据结构。 C语言中,结点的格式声明如下: struct 结构名称 { 数据类型 数据变量; 数据类型 数据变量; ……. struct 结构名称 *next; }; typedef struct 结构名称 Node;//定义Node为使用上述结构的结点类型 typedef Node *link; //定义指向Node结点的指针类型 定义了上述结点,在程序中使用结点结构之前,需要声明新结点: Link 变量名称; (一个具备Node类型的结点) 程序运行中用到所声明结点时,还需要配置结点: ①向系统申请结点所需内存空间; ②为结点数据域赋值,并标记指针域。 例如,已定义一个名称为Student的结点,使用到这个结点时,还需利用malloc函数向系统要求配置内存空间。 Student = (Link)malloc(sizeof(Node)); 内存配置成功,则为该结点返回一个指针;内存配置不成功时,返回NULL指针。 另外,调用malloc函数,还需在程序开头使用包含命令注明其头文件:#includestdlib.h 结点空间配置成功则赋值: ①为结点的数据域赋值: New-Data(结点结构中数据变量名) = 23; 若结点结构中定义了多个变量,则可逐一赋值。 如:New-Number = 23; New-Name[i] = Dataname[i]; ②为结点的指针域赋值: New-Next = NULL; 内存配置成功,且为结点赋值之后结构如下:(若新结点为New) New 如,定义结点s: LinkList *s ; 则配置(建立)新结点s的过程为: s=(LinkList *)malloc(sizeof(LinkList)); s-data=a[i]; s-next=NULL; 2、单链表的建立 单链表的建立就是从首结点开始,将每个结点单向串联起来。 建立步骤:为每一个结点配置空间;为结点赋值;挂接结点

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档