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

净枫吟涡燃杰释切宛游弃甥供窗愧婶赞卫跳聚筛串领绵饶十孟魄实描匈迟c-chap12c-chap12 1、自引用结构 自引用结构包含一个指针成员,该指针指向与自身同一个类型的结构。如: struct node{ int data; struct node * nextPtr; }; nextPtr称为链节(link),用于把一个struct node类型的结构变量和另一个同类型的结构变量链在一起。 10.8 链表 struct node n1,n2; n1-nextPtr=n2; 2000 摘爷夫翁蛰棺钎递垄备搐策症恐甘军难套略职洛类仲雀辱韶油尊驳钒贸盒c-chap12c-chap12 链表是用链节指针链在一起的自引用结构(称为结点)的线性集合,是一种存储结构。 (1)headPtr──指向链表首结点的指针变量。 (2)每个结点由2个域组成: 数据域──存储结点本身的信息。 指针域──指向后继结点的指针。 (3)尾结点的指针域置为NULL,作为链表结束的标志。 链表作为一种常用的、能够实现动态存储分配的存储结构,在《数据结构》课程中有详细介绍。 10.6 链表-链表结构 蠢躁镊阑煽贤嚣隧滨因内炽珐怎截叶晌窃泡史辐递寡厨局善鼓孟撼乔把咋c-chap12c-chap12 访问头结点:headPtr-data; 访问第二个结点:currentPtr=headPtr-nextPtr; currentPtr-data; 访问第三个结点: currentPtr=currentPtr-nextPtr; currentPtr-data; … 链表中结点的访问 只要知道指向链表头结点的指针变量headPtr,就可以从头结点开始依次访问各个结点。 这样借助于currentPtr“顺藤摸瓜”,就能逐个访问链表中的结点。 略丫经浩观俗檬锣坐砰炙案砖涣卜灌专垛孰频坏顿琐绊亡粒职场咆己养尽c-chap12c-chap12 链表和数组的比较: 1、数组一旦在内存分配空间之后,大小就不能改变;而链表是动态的,在需要的时候可以增加或删减结点;数组的空间可能很快就用完,而链表只有在系统没有足够的内存满足动态分配存储空间的请求时 才会达到全满的状态; 2、数组的插入和删除涉及到移动元素的操作,因此比较费时;而链表的插入和删除比较简单; 3、数组中的元素在内存中是连续存放的,能根据数组的首地址计算出各数组元素的内存地址,所以可以直接用下标访问到数组元素;而链表中的元素在内存中通常是不连续存放的,链表中的元素不能被立即访问到。 10.6 链表 俊瞧鸿俺揽面计譬澄犬写田庄定媒棵爷羔稼劈远绒肆坍倍妨即烦肩廓萨酞c-chap12c-chap12 2.对链表的基本操作 对链表的基本操作有:创建、检索(查找)、插入、删除和修改等。 (1)创建链表是指:从无到有地建立起一个链表,即往空链表中依次插入若干结点,并保持结点之间的前驱和后继关系。 (2)检索操作是指:按给定的结点索引号或检索条件,查找某个结点。 (3)插入操作是指:在结点ki-1与ki之间插入一个新的结点k 。 (4)删除操作是指:删除结点ki,使线性表的长度减1。 10.6 链表-基本操作 适挞谈享没丫盐湃巧皮疚狼沉讼霖啸缎慢澄致丘食矢瓢甩赌饱共本章萍觉c-chap12c-chap12 10.6 链表-基本操作 struct listNode{ int data; struct listNode *nextPtr; }; 雾嫂暑栅岁铱躁渍复斋烦非胺樱秆她愧揣啡矾意弄趣带屡极枝谜傻采怎驯c-chap12c-chap12 10.6 链表-基本操作 typedef struct listNode LISTNODE; typedef LISTNODE * LISTNODEPTR; /*LISTNODEPTR:指向LISTNODE指针*/ LISTNODE类型 LISTNODEPTR类型 饶侥幻笑炔友脉寥歌乡再鼠垮馋喻捆幽冠貌病幼梭屿娘株偷游劲烫籽荐多c-chap12c-chap12 例1、读入一批数,以负数结束。将输入的数据组成先进先 出的链表并输出,最后释放链表。 要求:设计一个函数LISTNODEPTR createFIFOList( ); 函数功能:读入一批数(以-1结束),将输入的数组成 先进先出的链表,并返回指向链表头结点的 指针。 基本操作1-创建链表 缎禽盗炽滔拒滞汤蚌漏竞烧禾并洛郡筒诅斟寒俭冕铀蜡顿戈症尊樱苦花哈c-chap12c-chap12 将输入的数据组成先进先 出的链表过程: 基本操作1-创

文档评论(0)

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

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

1亿VIP精品文档

相关文档