chapt2 线性表(二)的.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chapt2 线性表(二)的

第二章 线性表;线性表(二);§4 链表;一、单链表;整个链表的存取必须从头指针开始进行,头指针指示链表中的首结点(第一个元素的存储映像)的存储位置,这里用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 ; 单链表类型定义也可如下表示(本教材定义方法): 在单链表中,假定每个结点类型用LinkList表示,它应包括存储元素的数据域,这里用 data 表示,其类型使用通用类型标识符ElemType 表示;还包括存储后继元素位置的指针域,这里用 next表示。则LinkList类型的定义如下: typedef struct LNode /*定义单链表结点类型*/ { ElemType data; struct LNode *next; /*指向后继结点*/ } LinkList; /*定义单链表*/ 定义了上述结点,在程序中使用结点结构之前,声明新结点: LinkList *结点名称; ; 如,定义结点s: LinkList *s ; 则配置(建立)新结点s的过程为: s=(LinkList *)malloc(sizeof(LinkList)); s-data=a[i]; s-next=NULL;;2、单链表的建立 单链表的建立就是从首结点开始,将每个结点单向串联起来。 建立步骤:为每一个结点配置空间;为结点赋值;挂接结点。 (1)头插法 先声明一个头结点Head,为其配置空间;令Head-Next =NUL

文档评论(0)

ayangjiayu5 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档