第2章线性表_2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章线性表_2要点

数据结构 2015-2016-2 渭南师范学院 2015级 第2章 线性表 2.3 线性表的链式存储 小结 2.3 线性表的链式存储 线性表中的元素呈线性关系(逻辑结构): 在顺序存储结构中,以内存单元的连续表示元素之间的顺序关系。(物理结构1:顺序映象) 还可以以另外一种方式表示元素之间的先后次序关系,即链的形式。 (物理结构2 :非顺序映象) 采用链式存储的线性表称线性链表。 从链接方式的角度看,链表分为单链表、循环链表和双链表。 从实现角度看,链表分为静态链表和动态链表。 2.3 线性表的链式存储 2.3.1 单链表 单链表的结点(数据元素)包括两个域: 数据域用来存储结点的值; 指针域用来存储数据元素的直接后继的地址(或位置)。 图2.5 单链表的结点结构 2.3 线性表的链式存储 2.3.1 单链表 单链表:通过每个结点的一个指针域将线性表的n个结点按其逻辑顺序链接在一起。 头指针:指向第一个结点的指针。 线性表中最后一个结点的指针域为“空”(NULL)。 对于整个链表的存取必须从头指针开始。 2.3 线性表的链式存储 2.3.1 单链表 存储地址 数据域 指针域 1 D 43 7 B 13 13 C 1 19 H NULL 25 F 37 31 A 7 37 G 19 43 E 25 头指针H 31 图2.6 单链表示意图 2.3 线性表的链式存储 2.3.1 单链表 图2.7 单链表的逻辑状态 ^ 2.3 线性表的链式存储 2.3.1 单链表 为了操作统一方便,可在单链表的第一个结点之前附设一个头结点,此时头指针指向头结点。当线性表为空时,只有一个头结点,且头结点的指针域为空。 图2.8 带头结点单链表图示 2.3 线性表的链式存储 2.3.1 单链表 单链表的存储结构定义如下: typedef struct Node / * 结点类型定义 * / { ElemType data;  struct Node *next;  }Node, *LinkList; /* LinkList为结构体指针类型 */ 单链表的结点类型名是Node ,单链表类型名是LinkList 若有:LinkList L; 则L表示指向单链表的头指针,即表示单链表。 2.3 线性表的链式存储 2.3.2 单链表上的基本运算 1. 初始化单链表 【算法2.5 初始化单链表】 /* 将单链表L初始化为一个空表 */ void InitList(LinkList *L) /* 注意参数*/ { *L=(LinkList)malloc(sizeof(Node)); /* 建立头结点*/ (*L)-next=NULL; } 2.3 线性表的链式存储 2.3.2 单链表上的基本运算 2. 建立单链表 (1)头插法建立单链表 图2.9 头插法建立单链表图示 2.3 线性表的链式存储 2.3.2 单链表上的基本运算 2. 建立单链表 (1)头插法建立单链表 图2.9 头插法建立单链表图示 ① ② 2.3 线性表的链式存储 【算法2.6 用头插法建立单链表】 /* L是带头结点的空单链表,通过键盘输入元素,用头插法建立单链表 */ void CreateFromHead(Linklist L) { Node *s; char c; int flag=1; while(flag) /* flag初值为1,当输入“$”时,将flag置为0,建表结束 */ { c=getchar(); if(c! =$) { s=(Node*)malloc(sizeof(Node)); /* 建立新结点s */ s-data=c; s-next=L-next; /* 将s插入表头 */ L-next=s; } else flag=0; } } 2.3 线性表的链式存储 2.3.2 单链表上的基本运算 (2) 尾插法建表 图2.10 尾插法建表图示 2.3 线性表的链式存储 【算法2.7 尾插法建立单链表】 void CreateFromTail(LinkList L) { Node *r, *s; char c; int flag=1; /* flag初值为1,当输入“$”时,flag为0,建表结束 */ r=L; /* r指向链表的当前表尾, 便于做尾插入,初始指向附加 头结点 */

文档评论(0)

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

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

1亿VIP精品文档

相关文档