- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(c语言版)_严蔚敏版_第2章_线性表_信大(第2讲)
第2章 线性表 第3章 栈和队列 第4章 串 第5章 数组和广义表 线性结构的特点: ① 只有一个首结点和尾结点; ② 除首尾结点外,其他结点只有一个直接前驱和一个直接后继。 练:判断下列叙述的正误: 1. 数据的逻辑结构是指数据元素之间的逻辑关系,是用户按使用需要建立的。 2. 线性表的逻辑结构定义是唯一的,不依赖于计算机。 3. 数据结构是指相互之间存在一种或多种关系的数据元素的全体。 4. 线性结构反映结点间的逻辑关系是一对一的。 5. 一维向量是线性表,但二维或N维数组不是。 6. “同一数据逻辑结构中的所有数据元素都具有相同的特性”是指数据元素所包含的数据项的个数都相等。 用数组V来存放26个英文字母组成的线性表(a,b,c,…,z),写出在顺序结构上生成和显示该表的C语言程序。 26个字母 另一种写法 #includestdio.h int main() { int i; for(i=0;i26;i++) if(i%2==0) printf(%c,A+i); else printf(%c,a+i); printf(\n); return 0; } 例1 画出26 个英文字母表的链式存储结构。 与链式存储有关的术语: 4、头指针、头结点和首元结点 示意图如下: 特点: 用一组任意的存储单元存储线性表的数据元素 利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素 每个数据元素ai,除存储本身信息外还需存储其直接后继的信息 结点 数据域:元素本身信息 指针域:指示直接后继的存储位置 讨论3. 头结点的数据域内装的是什么? 补充结构数据类型及其C语言表示法 ① 类型定义和变量说明可以合写为: typedef struct Ch { char data; //定义数据域的变量名及其类型 struct Ch *next; //定义指针域的变量名及其类型 }test,*head; /*test是Ch结构类型的变量, *head是Ch结构类型的头指针*/ 补充:结构类型的C语言表示法 5.应用举例:两个链表的归并(教材P31) 用链表可表示为: 算法分析: 思考: 6,其他形式的链表 要点回顾 1、结点:数据元素的存储映像。由数据域和指针域两部分组成; 2、链表: n 个结点由指针链组成一个链表。它是线性表的链式存储映像,称为线性表的链式存储结构。 3、单链表、双链表、多链表、循环链表: 结点只有一个指针域的链表,称为单链表或线性链表; 有两个指针域的链表,称为双链表; 有多个指针域的链表,称为多链表; 首尾相接的链表称为循环链表。 a1 head a2 an …… head 循环链表示意图: 头指针 头结点 首元结点 a1 head a2 … info an ^ 头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针; 头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息; 首元结点是指链表中存储线性表第一个数据元素a1的结点。 2.3.1 单链表 由于链表的每个结点只有一个指针域,故将这种链表又称为单链表。 单链表中第一个结点无前趋,应设一个头指针H指向第一个结点。 单链表中最后一个结点没有直接后继,则指定最后一个结点的指针域为“空”(NULL)。 整个链表的存取必须从头指针开始。 例如:图2.5所示为线性表(A, B, C, D, E, F, G)的单链表存储结构,整个链表的存取需从头指针开始进行,依次顺着每个结点的指针域找到线性表的各个元素。 图2.5单链表的示例图 图2.6 单链表的逻辑状态 图2.7 带头结点单链表图示 一个线性表的逻辑结构为:(ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG),其存储结构用单链表表示如下,请问其头指针的值是多少? 存储地址 数据域 指针域 1 LI 43 7 QIAN 13 13 SUN 1 19 WANG NULL 25 WU 37 31 ZHAO 7 37 ZHENG 19 43 ZHOU 25 例: 答:头指针是指向链表中第一个结点的指针,因此关键是要寻找第一个结点的地址。 7 ZHAO H 31 ∴头指针的值是31 上例链表的逻辑结构示意图有以下两种形式: ① ZHAO QIAN LI SUN ZHOU WU ZHENG /\ WANG H ② ZHAO QIAN LI SUN ZHOU WU ZHENG /\ WANG H 区别:① 无头结点 ② 有头结点 答: 讨论1.
文档评论(0)