数据结构 清华大学出版社 严蔚敏吴伟民编著
数据结构(c语言版)课件_第八章_排序_(严蔚敏、吴伟民编_清华大学出版社)

的堆?
第二个问题解决方法——筛选
方法:输出堆顶元素之后,以堆中最后一个元素替代之;然
后将根结点值与左、右子树的根结点值进行比较,并与其中 小者进行交换;重复上述操作,直至叶子结点,将得到新的 堆,称这个从堆顶至叶子的调整过程为“筛选”
例 38 50 97 76
13 27 65 49 13 38
76 65
50
76
97 13 49 38
65 27
97
49
38
27
输出:13 27 38 49
输出:13 27 38 49
97
65 65 76 50 49 38 97 27 13 输出:13 27 38 49 50 50 76 49
97 65
38 27
76
50 13 49 38
27
13 输出:13 27 38 49 50
输出:13 27 38 49 50 65
76 97 50 49 38 65 27 13 输出:13 27 38 49 50 65 97 50
97 76
49 38
65
27
13
输出:13 27 38 49 50 65 76
76
50 13 49 38
65 27
输出:13 27 38 49 50 65 76 97
例
38 49 49 38 65 76 97 13 97 76 97 27 13 30 97 27 97 30 初 始 关 键 字
38 49 65 13 76 27 76 13 30 76 27 76 30 97 第 一 趟
38 49 13 65 27 65 13 30 65 27 65 30
38 13 49
长春理工大学研究生入学考试《数据结构》考试大纲

长春理工大学研究生入学考试《数据结构》考试大纲一、考试科目:数据结构二、适用专业:计算机科学技术学院所有专业三、参考书目:1.《数据结构》(C语言版)严蔚敏吴伟民编著,清华大学出版社, 2011.11。
四、考试内容:(一)主要考查目标1. 理解数据结构的基本概念,掌握数据的逻辑结构、存储结构及其差异,以及基本操作及实现。
2. 掌握基本的数据处理原理和方法,能够对算法进行设计和分析。
3. 能够选择合适的数据结构和方法进行问题求解。
(二)知识点1、线性表1) 线性链表的顺序存储结构;线性链表的链式存储结构;线性表的插入与删除2) 线性表的应用2、栈和队列1) 栈的基本概念;栈的顺序存储结构;栈的链式存储结构;栈的基本操作及应用2) 队列的基本概念;队列的顺序存储结构;队列的链式存储结构;队列的基本操作及应用3、串1) 字符串的基本操作及应用2)字符串的模式匹配4、数组与广义表1) 特殊矩阵的压缩存储2) 广义表的概念和表示;广义表存储结构3)数组及广义表的基本操作和应用5、树与二叉树1) 树的概念2) 二叉树的定义;二叉树的性质;二叉树的顺序存储结构和链式存储结构3) 二叉树遍历4) 线索化二叉树的构造5) 树的存储结构;森林与二叉树的转换;树与森林的遍历6) 哈夫曼(Huffman)树和哈夫曼编码;树的基本应用6、图1) 图的基本概念2) 图的邻接矩阵;邻接表3) 图的深度优先搜索;广度优先搜索4) 最小生成树5) 拓扑排序6)最短路径;关键路径;图的基本应用7、查找1)查找的基本概念2)顺序查找法3)折半查找法4)散列(Hash)表及其查找;散列表与散列方法5)各种查找方法的比较和应用8、内部排序1) 直接插入排序;折半插入排序2) 起泡排序3)简单选择排序4)希尔排序5)快速排序6) 堆排序7) 归并排序8)各种排序方法比较及应用最高贵的复仇是宽容。
有时宽容引起的道德震动比惩罚更强烈。
君子贤而能容罢,知而能容愚,博而能容浅,粹而能容杂。
数据结构(c语言版)课件 第一章 绪论 (严蔚敏、吴伟民编 清华大学出版社)

可进行的操作的总称
例 C语言中,提供int, char, float, double等基本 数据类型,数组、结构体、共用体、枚举 等构造数据类型,还有指针、空(void)类 型等。用户也可用typedef 自己定义数据类型 typedef struct { int num; char name[20]; float score; }STUDENT; STUDENT stu1,stu2, *p;
存储内容 元素1 元素4 …….. 元素2 ……..
指针 1400 ∧ ……. 1536 …….
1536
元素3
1346
数据结构的三个方面:
线性结构
数据的逻辑结构 非线性结构 数据的存储结构
线性表 栈 队 树形结构
图形结构
顺序存储
链式存储
数据的运算:检索、排序、插入、删除、修改等
数据类型—高级语言中指数据的取值范围及其上
数据的逻辑结构—只抽象反映数据元素的逻辑关系 数据的存储(物理)结构—数据的逻辑结构在计算
机存储器中的实现
存储结构分为: 顺序存储结构——借助元素在存储器中的相对位置来表示 数据元素间的逻辑关系 链式存储结构——借助指示元素存储地址的指针表示数据 元素间的逻辑关系 数据的逻辑结构与存储结构密切相关
树
……..
……..
…...
…...
…...
…...
多叉路口交通灯管理问题
图
C AB
AC
AD
B
D
BA
BC
BD
E
DA EA EB DB EC DC ED
A
数据结构定义: 是一门研究非数值计算的程序设
计问题中计算机的操作对象以及它们之间的关系 和操作等等的学科
计算机专业课推荐参考书目

全国硕士研究生入学统一考试计算机专业课推荐参考书目一、数据结构★严蔚敏、吴伟民编著:《数据结构(c语言版)》,清华大学出版社★严蔚敏、吴伟民编著:《数据结构题集(C语言版)》,清华大学出版社二、计算机组成原理★唐朔飞编著:《计算机组成原理》,高等教育出版社,1999年版★唐朔飞编著:《计算机组成原理学习指导与习题解答》,高等教育出版社,2005年9月★白中英主编:《计算机组成原理》,科学出版社三、操作系统★汤小丹、梁红兵、哲凤屏、汤子瀛编著:《计算机操作系统(第三版)》,西安电子科技大学出版社★梁红兵、汤小丹编著:《计算机操作系统》学习指导与题解(第二版),西安电子科技大学出版社,2008年9月四、计算机网络★谢希仁编著:《计算机网络(第5版)》,电子工业出版社★高传善、毛迪林、曹袖主编:《数据通信与计算机网络(第2版)》,高等教育出版社说明:★为首推书;出版年份不需要严格要求,一般是越新越好,关键以出版社和作者为主要参照。
相关参考辅导书:★本书编写组:《全国硕士研究生入学统一考试计算机专业基础综合考试大纲解析》,高等教育出版社,2008年10月★巩微、冯东晖主编:《2009年考研计算机学科专业基础综合考试全真模拟试题集》,原子能出版社,2008年10月★阳光考研命题研究中心编写:《2009年考研计算机科学专业基础综合考试教程》,中国人民大学出版社,2008年11月2009年计算机科学与技术学科联考高分突破考前冲刺400题一、数据结构1.教材:《数据结构》严蔚敏清华大学出版社清华大学严蔚敏的这本数据结构的教材是国内数据结构教材的权威。
也是国内使用最广,其广度远远超越其他同类教材,计算机考研专业课命题必定以它为蓝本。
这一本数据结构是2007年的最新版本,完全适合任何学校的考研数据结构的复习之用,是数据结构学习最权威的教材。
2.辅导书:《算法与数据结构考研试题精析(第二版)》机械工业出版社网上广为流传的数据结构1800题相信只要是计算机考研的同学无人不知无人不晓。
数据结构严蔚敏PPT(完整版)

算法具有以下五个特性
① 有穷性: 一个算法必须总是在执行有穷步之后结 束,且每一步都在有穷时间内完成。
② 确定性:算法中每一条指令必须有确切的含义。 不存在二义性。且算法只有一个入口和一个出口。
图状结构
一般线性表 栈和队列 串 数组 广义表 一般树 二叉树 有向图 无向图
图1-5 数据逻辑结构层次关系图
1.1.5 数据类型
数据类型(Data Type):指的是一个值的集合和定 义在该值集上的一组操作的总称。
数据类型是和数据结构密切相关的一个概念。 在C 语言中数据类型有:基本类型和构造类型。
问题:必须先运行依据算法编制的程序;依赖软硬 件环境,容易掩盖算法本身的优劣;没有实际价值。 事前分析:求出该算法的一个时间界限函数。
与此相关的因素有: – 依据算法选用何种策略; – 问题的规模; – 程序设计的语言; – 编译程序所产生的机器代码的质量; – 机器执行指令的速度; 撇开软硬件等有关部门因素,可以认为一个特定算
K={k1, k2, …, k9} R={ <k1, k3>,<k1, k8>,<k2, k3>,<k2, k4>,<k2, k5>,<k3, k9>, <k5, k6>,<k8, k9>,<k9, k7>,<k4, k7>,<k4, k6> } 画出这逻辑结构的图示,并确定那些是起点,那些是终点
数据元素之间的关系可以是元素之间代表某种含义 的自然关系,也可以是为处理问题方便而人为定义的 关系,这种自然或人为定义的 “关系”称为数据元素 之间的逻辑关系,相应的结构称为逻辑结构。
数据结构(C语言版)清华大学出版社 严蔚敏 吴伟民

吉首大学题库一、一、单选题(每题 2 分,共20分)1. 1.对一个算法的评价,不包括如下()方面的内容。
A.健壮性和可读性B.并行性C.正确性D.时空复杂度2. 2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( )。
A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3. 3.对线性表,在下列哪种情况下应当采用链表表示?( )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4. 4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 35. 5.AOV网是一种()。
A.有向图B.无向图C.无向无环图D.有向无环图6. 6.采用开放定址法处理散列表的冲突时,其平均查找长度()。
A.低于链接法处理冲突 B. 高于链接法处理冲突C.与链接法处理冲突相同D.高于二分查找7.7.若需要利用形参直接访问实参时,应将形参变量说明为()参数。
A.值B.函数C.指针D.引用8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。
A.行号B.列号C.元素值D.非零元素个数9.9.快速排序在最坏情况下的时间复杂度为()。
A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2)10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( )。
A. O(n)B. O(1)C. O(log2n)D. O(n2)二、二、运算题(每题 6 分,共24分)1. 1.数据结构是指数据及其相互之间的______________。
当结点之间存在M对N(M:N)的联系时,称这种结构为_____________________。
数据结构教材 出版社: 清华大学出版社 作者: 严蔚敏吴伟民 ISBN ...

数据结构教材出版社:清华大学出版社作者:严蔚敏吴伟民ISBN :978-7-302-02368-5目录第1章绪论1.1 什么是数据结构1.2 基本概念和术语1.3 抽象数据类型的表现与实现1.4 算法和算法分析第2章线性表2.1 线性表的类型定义2.2 线性表的顺序表示和实现2.3 线性表的链式表示和实现2.4 一元多项式的表示及相加第3章栈和队列3.1 栈3.2 栈的应有和举例3.3 栈与递归的实现3.4 队列3.5 离散事件模拟第4章串4.1 串类型的定义4.2 串的表示和实现4.3 串的模式匹配算法4.4 串操作应用举例第5章数组和广义表5.1 数组的定义5.2 数组的顺序表现和实现5.3 矩阵的压缩存储5.4 广义表的定义5.5 广义表的储存结构5.6 m元多项式的表示5.7 广义表的递归算法第6章树和二叉树6.1 树的定义和基本术语6.2 二叉树6.2.1 二叉树的定义6.2.2 二叉树的性质6.2.3 二叉树的存储结构6.3 遍历二叉树和线索二叉树6.3.1 遍历二叉树6.3.2 线索二叉树6.4 树和森林6.4.1 树的存储结构6.4.2 森林与二叉树的转换6.4.3 树和森林的遍历6.5 树与等价问题6.6 赫夫曼树及其应用6.6.1 最优二叉树(赫夫曼树)6.6.2 赫夫曼编码6.7 回溯法与树的遍历6.8 树的计数第7章图7.1 图的定义和术语7.2 图的存储结构7.2.1 数组表示法7.2.2 邻接表7.2.3 十字链表7.2.4 邻接多重表7.3 图的遍历7.3.1 深度优先搜索7.3.2 广度优先搜索7.4 图的连通性问题7.4.1 无向图的连通分量和生成树7.4.2 有向图的强连通分量7.4.3 最小生成树7.4.4 关节点和重连通分量7.5 有向无环图及其应用7.5.1 拓扑排序7.5.2 关键路径7.6 最短路径7.6.1 从某个源点到其余各顶点的最短路径7.6.2 每一对顶点之间的最短路径第8章动态存储管理8.1 概述8.2 可利用空间表及分配方法8.3 边界标识法8.3.1 可利用空间表的结构8.3.2 分配算法8.3.3 回收算法8.4 伙伴系统8.4.1 可利用空间表的结构8.4.2 分配算法8.4.3 回收算法8.5 无用单元收集8.6 存储紧缩第9章查找9.1 静态查找表9.1.1 顺序表的查找9.1.2 有序表的查找9.1.3 静态树表的查找9.1.4 索引顺序表的查找9.2 动态查找表9.2.1 二叉排序树和平衡二叉树9.2.2 B树和B+树9.2.3 键树9.3 哈希表9.3.1 什么是哈希表9.3.2 哈希函数的构造方法9.3.3 处理冲突的方法9.3.4 哈希表的查找及其分析第10章内部排序10.1 概述10.2 插入排序10.2.1 直接插入排序10.2.2 其他插入排序10.2.3 希尔排序10.3 快速排序10.4 选择排序10.4.1 简单选择排序10.4.2 树形选择排序10.4.3 堆排序10.5 归并排序10.6 基数排序10.6.1 多关键字的排序10.6.2 链式基数排序10.7 各种内部排序方法的比较讨论第11章外部排序11.1 外存信息的存取11.2 外部排序的方法11.3 多路平衡归并的实现11.4 置换一选择排序11.5 最佳归并树第12章文件12.1 有关文件的基本概念12.2 顺序文件12.3 索引文件12.4 ISAM文件和VSAM文件12.4.1 ISAM文件12.4.2 VSAM文件12.5 直接存取文件(散列文件)12.6 多关键字文件12.6.1 多重表文件12.6.2 倒排文件附录A 名词索引附录B 函数索引参考书目。
数据结构(c语言版)课件 第八章 排序 (严蔚敏、吴伟民编 清华大学出版社)

第二个问题解决方法——筛选
方法:输出堆顶元素之后,以堆中最后一个元素替代之;然 后将根结点值与左,右子树的根结点值进行比较,并与其中 小者进行交换;重复上述操作,直至叶子结点,将得到新的 堆,称这个从堆顶至叶子的调整过程为"筛选"
例 38 50 97 76
13 27 65 49 13 50 38 76
第八章 排序
排序定义——将一个数据元素(或记录)的任意 序列,重新排列成一个按关键字有序的序列叫~ 排序分类
按待排序记录所在位置
内部排序:待排序记录存放在内存 外部排序:排序过程中需对外存进行访问的排序
按排序依据原则
插入排序:直接插入排序,折半插入排序,希尔排序 交换排序:冒泡排序,快速排序 选择排序:简单选择排序,堆排序 归并排序:2-路归并排序 基数排序
38 13 49 49 27 13 49 30 27 49 30 65 第 三 趟
13 38 27 38 13 38 30 27 38 30 49
13 27 30 38
13 27 30
第 四 趟 五 8_4.txt
算法评价
时间复杂度 最好情况(正序) 比较次数:n-1 移动次数:0 最坏情况(逆序) n 1 比较次数:∑ (n i) = 1 (n 2 n)
n i= 2 i= 2
2 ( n + 4 )( n 1 ) ( i + 1) = 2
若待排序记录是随机的,取平均值 n2 关键字比较次数: T(n)=O(n) 4 记录移动次数: Ch8_1.c 空间复杂度:S(n)=O(1)
n2 4
折半插入排序
排序过程:用折半查找方法确定插入位置的排序叫~
例 i=1 …... i=7 6 (6 13 30 39 13 30 39 m 13 30 39 j m 13 30 39 s mj 13 30 39 j s 42 70 85 ) 20 42 70 85 ) 20 j 42 70 85 ) 20 42 70 85 ) 20 42 70 85 ) 20 42 70 85 ) i=8 20 (6 s i=8 20 (6 s i=8 20 (6 i=8 20 (6 i=8 20 (6 13 20 30 39 (30) 13 70 85 39 42 6 30) 70 85 39 42 6 20 20 i=2 13 (13
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章绪论1、数据结构是计算机中存储、组织数据的方式。
精心选择的数据结构可以带来最优效率的算法。
2、程序设计= 算法+数据结构3、解决问题方法的效率:●跟数据的组织方式有关●跟空间的利用效率有关●跟算法的巧妙程度有关4、数据:所有能输入到计算机中,且被计算机处理的符号的集合,是计算机操作对象的总称;是计算机处理的信息的某种特定的符号表示形式。
5、数据元素:数据中的一个“个体”,数据结构中讨论的基本单位。
相当于“记录”,在计算机程序中通常作为一个整体考虑和处理。
6、数据项: 相当于记录的“域”, 是数据的不可分割的最小单位,如学号。
数据元素是数据项的集合。
7、数据对象:性质相同的数据元素的集合.例如: 所有运动员的记录集合8、数据结构:是相互间存在某种关系的数据元素集合。
9、数据结构是带结构的数据元素的集合。
10、不同的关系构成不同的结构。
11、次序关系:{<ai,ai+1>|i=1,2,3,4,5,6}12、对每种数据结构,主要讨论如下两方面的问题:1)数据的逻辑结构,数据结构的基本操作;2)数据的存储结构,数据结构基本操作的实现;13、数据的逻辑结构:数据之间的结构关系,是具体关系的抽象。
数据结构的基本操作:指对数据结构的加工处理。
14、数据的存储结构(物理结构):数据结构在计算机内存中的表示。
数据结构基本操作的实现:基本操作在计算机上的实现(方法)。
15、数据结构的有关概念16、数据元素的4类的基本结构:○1集合;○2线性结构:结构中数据元素之间存在一对一的关系;○3树形结构:结构中数据元素之间存在一对多的关系;○4图状结构或网状结构:结构中数据元素之间存在多对多的关系。
17、C语言的优点:C语言可以直接操作内存。
18、每个节点都由两部分组成:数据域和指针域。
19、链接存储结构特点:●比顺序存储结构的存储密度小(每个节点都由数据域和指针域组成)。
●逻辑上相邻的节点物理上不必相邻。
●插入、删除灵活(不必移动节点,只要改变节点中的指针)。
20、数据类型是一个值的集合和定义在此集合上的一组操作的总称。
21、ADT 有两个重要特征:数据抽象和数据封装。
22、抽象数据类型(Abstract Data Type 简称ADT):是指一个数学模型以及定义在此数学模型上的一组操作。
23、抽象数据类型有:数据对象〈数据对象的定义〉、数据关系〈数据关系的定义〉、基本操作〈基本操作的定义〉。
24、数据类型的定义和含义。
定义:数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
含义:将数据按一定次序与形式存放的结构。
24、算法空间复杂度S(n)算法的存储量包括:①输入数据所占的空间;②程序本身所占的空间;③辅助变量所占的空间。
25、算法具有有穷性、确定性、可行性、输入和输出五大特性。
26、抽象数据类型具有数据抽象、数据封装的特点。
27、数据的储存结构分为:顺序存储结构和链式存储结构。
第二章线性表1、线性结构的特点:在数据元素中的非空有限集中。
(1)存在唯一的一个被称作“第一”的数据元素;(2)存在唯一的一个被称作“最后一个”的数据元素;(3)除第一个外,集合中的每一个数据元素均只有一个前驱;(4)除最后一个外,集合中的每一个数据元素均只有一个后继。
2、线性表(Linear List) :一个线性表是n个数据元素的有限序列。
3、线性表的顺序存储实现:typedef struct {ElementType Data[MAXSIZE];int Last;} List;List L, *PtrL;4、初始化(建立空的顺序表)List *MakeEmpty( ){ List *PtrL;PtrL = (List *)malloc( sizeof(List) );PtrL->Last = -1;return PtrL;}5、查找int Find( ElementType X, List *PtrL ){ int i = 0;while( i <= PtrL->Last && PtrL->Data[i]!= X )i++;if (i > PtrL->Last) return -1; /* 如果没找到,返回-1 */else return i; /* 找到后返回的是存储位置*/}6、插入算法void Insert( ElementType X, int i, List *PtrL ){ int j;if ( PtrL->Last == MAXSIZE-1 ){ /* 表空间已满,不能插入*/printf("表满");return;}if ( i < 1 || i > PtrL->Last+2) { /*检查插入位置的合法性*/printf("位置不合法");return;}for ( j = PtrL->Last; j >= i-1; j-- )PtrL->Data[j+1] = PtrL->Data[j]; /*将ai~an倒序向后移动*/PtrL->Data[i-1] = X; /*新元素插入*/PtrL->Last++; /*Last仍指向最后元素*/return;}7、删除算法void Delete( int i, List *PtrL ){ int j;if( i < 1 || i > PtrL->Last+1 ) { /*检查空表及删除位置的合法性*/printf (“不存在第%d个元素”, i );return ;}for ( j = i; j <= PtrL->Last; j++ )PtrL->Data[j-1] = PtrL->Data[j]; /*将ai+1~an顺序向前移动*/PtrL->Last--; /*Last仍指向最后元素*/return;}8、求表长int Length ( List *PtrL ){ List *p = PtrL; /* p指向表的第一个结点*/int j = 0;while ( p ) {p = p->Next;j++; /* 当前p指向的是第j 个结点*/}return j;}9、查找(1)按序号查找: FindKth;List *FindKth( int K, List *PtrL ){ List *p = PtrL;int i = 1;while (p !=NULL && i < K ) {p = p->Next;i++;}if ( i == K ) return p;/* 找到第K个,返回指针*/else return NULL;/* 否则返回空*/}(2)按值查找: FindList *Find( ElementType X, List *PtrL ){List *p = PtrL;while ( p!=NULL && p->Data != X )p = p->Next;return p;}10、插入(在链表的第i-1(1≤i≤n+1)个结点后插入一个值为X的新结点)List *Insert( ElementType X, int i, List *PtrL ){ List *p, *s;if ( i == 1 ) { /* 新结点插入在表头*/s = (List *)malloc(sizeof(List)); /*申请、填装结点*/s->Data = X;s->Next = PtrL;return s; /*返回新表头指针*/}p = FindKth( i-1, PtrL ); /* 查找第i-1个结点*/if ( p == NULL ) { /* 第i-1个不存在,不能插入*/printf("参数i错");return NULL;}else {s = (List *)malloc(sizeof(List)); /*申请、填装结点*/s->Data = X;s->Next = p->Next; /*新结点插入在第i-1个结点的后面*/p->Next = s;return PtrL;}}11、删除(删除链表的第i (1≤i≤n)个位置上的结点)List *Delete( int i, List *PtrL ){ List *p, *s;if ( i == 1 ) { /* 若要删除的是表的第一个结点*/s = PtrL; /*s指向第1个结点*/PtrL = PtrL->Next; /*从链表中删除*/free(s); /*释放被删除结点*/return PtrL;}p = FindKth( i-1, PtrL ); /*查找第i-1个结点*/if ( p == NULL ) {printf(“第%d个结点不存在”, i-1); return NULL;} else if ( p->Next == NULL ){printf(“第%d个结点不存在”, i); return NULL;} else {s = p->Next; /*s指向第i个结点*/p->Next = s->Next; /*从链表中删除*/free(s); /*释放被删除结点*/return PtrL;}}12、链表不具备的特点是 1 。
①可随机访问任一节点②插入删除不须要移动元素③不必事先估计存储空间④所需空间与其长度成正比13、带头结点的单链表head为空的判定条件是 2 。
①head==NULL ②head->next==NULL③head->next==head ④head!=NULL14、如果最常用的操作是取第i个结点及其前驱,则采用 4 存储方式最节省时间。
①单链表②双链表③单循环链表④顺序表第三章Chapter 3 栈(stacks)和队列(queues)1、栈是限定仅能在表尾一端进行插入、删除操作的线性表。
2、栈的特点是“后进栈的元素先出栈”(last in, first out),故栈又称为后进先出表(LIFO)。
3、一个栈是一些元素的线形列表,其中元素的插入和删除均在表的同一端进行。
插入和删除发生的一端称为栈顶(the top of the stack)。
4、第一个进栈的元素在栈底,5、最后一个进栈的元素在栈顶,第一个出栈的元素为栈顶元素,最后一个出栈的元素为栈底元素。
6、连续栈(Contiguous Stack)的类型定义#define MaxStack 50Typedef struct{datatype stack[MaxStack];int top;}Seqstack;Seqstack *s;7、判断栈是否已满viod Push(Seqstack *s, datatype x ){if (s->top>=MaxStack-1) printf(“overflow”);else {s-> top++;s->stack[s->top]=x;}}8、判断栈是否为空datatype pop(Seqstack *s ){ if (s->top<0){printf(“underflow”); return(NULL);}return(s->stack[s->top]);s->top--;}9、返回栈顶元素的值,栈不发生变化。