C++课件 简单链表及其应用.ppt

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

简单链表及其应用 链表是指将一组同类型数据(通常为结构体类型)按其特有的方式连接在一起的一种数据结构。 链表中的元素称为结点。每一个结点都包含两类数据:一类数据称为结点的值域,它是描述该结点所包含的实际数据,可以由多个不同类型的数据构成;另一类数据称为链域,它用来存储与本结点相邻的结点的地址,其作用是将各个结点连接在一起,它通常是与结点同类型的指针。 任何一个链表都一个起始指针,称为该链表的头指针(head)。 链表的最后一个结点称为尾结点,它的链域指针不指向任何结点,通常将它设置为空指针。 特点 每个元素(表项)由结点(Node)构成。 线性结构 结点可以不连续存储 表可扩充 单链表 (Singly Linked List) data link a0 a1 a2 a3 a4 ? head 存储数据元素 存储后继结点 存储地址 头结点 空指针 单链表的存储映像 free (a) 可利用存储空间 a0 a2 a1 a3 ? free head (b) 经过一段运行后的单链表结构 2000 A 2114 B 2056 C NULL 2000 2114 2056 head 某单链表示意图如下: 头指针 head …… lat jat …… fat bat mat …. eat cat ……. hat ……… …… …… 160 205 205 200 …… …… 110 170 130 165 Null 160 …… …… 170 135 135 130 …… …… 200 110 …… …… 165 head bat cat eat mat ^ … 用C++语言描述的一个简单的单链表如下: struct node{ int data; //值域 node *next; //链域 }; 例. 建立一个简单的链表,它由3个学生数据的结点组成, 输出各结点中的数据。 #define NULL 0 p=head; struct student do { long num; { coutp-nump-score; float score; p=p-next; student *next; }while(p!=NULL);} }; void main() {student a,b,c,*head,*p; a.num=99101; a.score=89.5; b.num=99103; b.score=90; c.num=99107; c.score=85; head=a; /*将结点a的起始地址赋给头指针head*/ a.next=b; /*将结点b的起始地址赋给a结点的next成员*/ b.next=c; c.next=NULL; . 创建无序链表 一个链表是有若干个结点连接而成,创建链表实际上是创建链表中的各个结点,并将它们连接起来。 函数nosorted_create( )实现创建链表,其算法为:如果链表为空(head==0),则将该结点设置为表头;如果链表非空,则将该结点加入到链表的末尾。 将结点设置为表头的过程如下图所示: pNew head (b) 加入结点后 head=pNew; pEnd=pNew; pEnd 头结点 加入结点前 head=0; pEnd=pNew; pEnd head pNew 将结点加到链表末尾的过程如下图所示: next data next next … data data 头结点 结点n … 新结点 pNew pEnd head (a) 加入前 pNew=new node; next next … data data 头结点 结点n … next data 结点n+1 head (b) 加入后 pEnd-next=pNew; pEnd=pNew; pEnd pNew 链表创建结束 next 0 next next … data data 头结点 结点n … 新结点 pNew pEnd head (a) 结束前 pNew=new node; (b) 结束后 pEnd-next=0;

文档评论(0)

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

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

1亿VIP精品文档

相关文档