文档视界 最新最全的文档下载
当前位置:文档视界 › 数据结构_(严蔚敏C语言版)_学习、复习提纲.

数据结构_(严蔚敏C语言版)_学习、复习提纲.

期末复习 第一章 绪论 复习

1、计算机算法必须具备输入、输出、可行性、确定性、有穷性5个特性。

2、算法分析的两个主要方面是空间复杂度和时间复杂度。

3、数据元素是数据的基本单位。

4、数据项是数据的最小单位。

5、数据结构是带结构的数据元素的集合。

6、数据的存储结构包括顺序、链接、散列和索引四种基本类型。

基础知识

数据结构

算 法

概 念

逻辑结构 存储结构

数据运算

数据:计算机处理的信息总称 数据项:最小单位 数据元素:最基本单位

数据对象:元素集合

数据结构:相互之间存在一种或

多种特定关系的数据元素集合。

概念:数据元素之间的关系 线性结构:一对一

非线性结构 树:一对多 图:多对多

顺序存储结构 链表存储结构 索引。。。 散列。。。

算法描述:指令的有限有序序列

算法特性 有穷性 确定性 可行性 输入 输出 算法分析

时间复杂度 空间复杂度

第二章 线性表 复习

1、在双链表中,每个结点有两个指针域,包括一个指向前驱结点的指针 、一个指向后继结点的指针

2、线性表采用顺序存储,必须占用一片连续的存储单元

3、线性表采用链式存储,便于进行插入和删除操作

4、线性表采用顺序存储和链式存储优缺点比较。

5、简单算法

第三章 栈和队列 复习

线性表

顺序存储结构

链表存储结构

概 念

基本特点

基本运算

定义

逻辑关系:前趋 后继

节省空间 随机存取 插、删效率低 插入 删除

单链表

双向 链表 特点

一个指针域+一个数据域 多占空间 查找费时 插、删效率高 无法查找前趋结点

运算

特点:单链表+前趋指针域

运算

插入

删除

循环 链表

特点:单链表的尾结点指针

指向附加头结点。 运算:联接

1、 栈和队列的异同点。

2、 栈和队列的基本运算

3、 出栈和出队

4、 基本运算

第四章 串 复习

存储结构

栈的概念:在一端操作的线性表 运算算法

栈的特点:先进后出 LIFO

初始化 进栈push 出栈pop

队列

顺序队列 循环队列

队列概念:在两端操作的线性表 假溢出

链队列

队列特点:先进先出 FIFO

基本运算

顺序:

链队:

队空:front=rear

队满:front=(rear+1)%MAXSIZE

队空:

front

rear ∧

初始化 判空 进队 出队

取队首元素

第五章 数组和广义表 复习

存储结构

运 算

概 念

顺序串

链表串

定义:由n(≥1)个字符组成的有限序列 S=”c 1c 2c 3 ……c

n ”

串长度、空白串、空串。

紧缩格式 非紧缩格式

以字节为单位的存储格式 (C 语言用数组或指针表示) 基本运算

strlen(s) 串长度 strcat(s1,s2) 联接 strcmp(s1,s2) 比较 strcpy(s1,s2) 复制 strstr(s1,s2) 子串查询

模式匹配

失败链接值

匹配算法

单字符链表串 多字符链表串

串变量的存储映像:

串名、串值对应关系表

顺序存储方式

压缩存储方式

行优先顺序存放

列优先顺序存放

C语言数组:行优先

下标从[0]开始,公式变化稀疏矩阵

应用

表达式程序调用

广义表运算

定义:n(≥0)个元素的有限序列

表头:Head(A)= a1

概念:长度、深度、原子、子表

存储结构(链表)

表尾:Tail(A)=(a2,a3,

…,a n)

tp

表结点

特殊矩阵

对称矩阵

三角矩阵

对角矩阵

三元组存储:三元组

m n t

链表存储:十字链表

hp

tag=1

tp

原子结点hp

tag=0

第六章 树 复习

1、三个结点可以组成2种不同形态的树。

2、一个稀疏矩阵Am*n 采用三元组形式表示,若完成了其的转置运算要经过哪几步: 矩阵的行、列数值互换 、矩阵元素所在行列值互换、元素在矩阵中排列的位置)重新排列

3、若二叉树中每一层结点的个数都达到了最大,则称为一棵满二叉树。

4、树最适合用来表示现有元素之间具有分支层次关系的数据

5、哈夫曼树是带权路径长度最小的二叉树。

二叉树

概 念

二叉树定义:树中结点的度≤2 有序树

可为空树(n=0)

性质

定义:递归定义,不为空

双亲、孩子、叶子、兄弟、祖先 树深、结点的度、有序树、无序树

存储方式

顺序:满、完全二叉树 链表:二叉、三叉链表

先根遍历序列

中根遍历序列 后根遍历序列

1. 第i 层至多有2i-1个结点。

2. 数深为k 的二叉树,至多有2k -1个结点。

3. n 0=n 2+1

4.

n 个结点的二叉

树树深为∟log 2n/2」+1

5. 双亲结点为i ,做孩子结点的编号为2i ,有孩子2i+1。

二叉树 的遍历 已知先根、中根序列画树;已知后根、中根序列画树;

先根线索 中根线索 后根线索

线索 二叉树 线索树的画法

树、森林与二叉树的相互转换 树、森林的遍历 树、森林 二叉排序树

树的应用

哈夫曼树

左 中 右 小 中 大 哈夫曼树的画法 编码:左0右1

6、以下那些项为用十字链表表示的稀疏矩阵元素结点信息元素所在行和列、元素的值、指向该元素所在行的下一个元素的指针、指向该元素所在列的下一个元素的指针。

7、一个广义表可以为其它广义表所共享。

8、广义表可以是一个多层次的结构。

9、压缩存储的三角矩阵和对称矩阵的存储空间相同。

10、广义表中的元素类型可以不相同。

11、两个稀疏矩阵的和仍为稀疏矩阵。

12、二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面。

13、对于一棵具有n个节点的树,该树中所有节点的度数之和为n-1。

14、树和森林的遍历中有中序遍历。

15、二叉树用链式存储时,空链域数多于非空链域数。

16、由森林转换成二叉树,其根节点的右子树总是空的。

17、哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。

18、当一棵具有n个叶子结点的二叉树的WPL值为最小时,称其树为Huffman树,且其二叉树的形状必是唯一的。x

19、某二叉树的先序遍历序列和中序遍历序列相同的二叉树为空树或任一结点均无左孩子的非空二叉树。

20、某二叉树的先序遍历序列和后序遍历序列相同的二叉树为空树或仅有一个结点的非空二叉树。

21、某二叉树的后序遍历序列和中序遍历序列相同的二叉树为空树或任一结点均无左孩子的非空二叉树。x

22、某二叉树的先序遍历序列和后序遍历序列相反的二叉树为高度等于结点数的二叉树。

满二叉树就是除叶子结点外的任何结点均有两个孩子结点,且所有的叶子结点都在同一层上的二叉树。

23、用一维数组存放二叉树时,总是以前序遍历存储结点,这是错误的说法

24、在度为k的树中,至少有一个度为k的结点。

25、在非空完全二叉树中,只有最下面一层的结点为叶结点。

26、在完全二叉树中,没有左孩子的结点一定是叶子结点。

27、特殊矩阵主要形式有对称矩阵、上三角矩阵、下三角矩阵、对角矩阵

28、在结点数目一定的前提下,各种形态的二叉树中,完全二叉树具有最小深度。

29、在所有深度相同的二叉树中,满二叉树具有最大结点数目。

30、给定一组权值,构造出来的哈夫曼树是不惟一的。

31、哈夫曼树中不存在度为1的结点。

32、线索二叉树中的每个结点通常包含有5个数据成员。

33、判断两个串相等的充分必要条件有两个:两个串的长度相等;两个串上对应位置的字符相同

34、下列哪些是广义表的特性:层次性、共享性、递归性

35、稀疏矩阵元素的三元组表示的项:元素所在行、元素所在列、元素的值

第七章 图 复习

1、强连通分量是有向图的极大连通子图。连通分量指的是无向图中的极大连通子图。

2、在一个图中,所有顶点的度数之和等于图的边数的2倍。

3、最短路径的生成斯算法可用迪杰斯特拉算法。

4、有向图的邻接表表示适用于求顶点的出度,逆邻接链表适用于求顶点的入度。

5、最小生成树只能是带权连通图的运算。

6、一个有向无环图的拓扑排序的序列是不唯一的。

7、一个图的邻接矩阵表示法是惟一的。一个图的邻接表表示法是不惟一的。

8、若一个有向图的邻接矩阵中对角线以下元素均为零,则该图的拓扑有序序列必定存在。若一个有向图中存在回路,则该图的拓扑有序序列不存在。

9、用邻接矩阵法存储一个图所需的存储单元数目与图的边数无关,与顶点数有关。

10、有n 个顶点的无向图, 采用邻接矩阵表示,图中的边数等于邻接矩阵中非零元素之和的一半。

存储结构

概念

二叉树定义:树中结点的度≤2 有序树 可为空树(n=0)

邻接矩阵

邻接链表、逆邻接链表

定义:G=(V , E) 无向图、有向图 路径、回路(环)、简单路径、简单回路 连通图、连通分量、强连通图、强连通分量 顶点的度:TD(Vi)=ID(Vi)+OD(Vi)

边与度的关系:2e=∑TD(Vi) (1≤i ≤n)

网络:AOV 网、AOE 网

深度优先遍历序列DFS 广度优先遍历序列BFS

图的遍历

Prim 普里姆算法

Kruskal 克鲁斯卡尔算法

生成树 最小生成树

顶点←→顶点

Dijkstra 迪杰斯特拉 单源点→其它顶点 Floyd 弗洛伊德:用邻接矩阵计算

最短路径

拓扑排序:AOV 网

应 用

关键路径:AOE 网

用邻接链表存储:从小编号开始遍历

11、邻接表中边结点数目为奇数的图一定是有向图。

12、不同的求最小生成树的方法最后得到的生成树是不一定相同的。

13、在一个图中,所有顶点的度数之和等于图的边数的2倍。

14、在一个有向图的拓朴序列中,若顶点a在顶点b之前,则图中必有一条弧,这是不正确的说法。

15、关键路径是从源点到汇点的最长路径。任意AOE网的关键路径是不唯一的。

16、有向图中一个顶点的度应该是它的出度与人度之和。

17、n个顶点的无向图最多有n(n-1)/2条边,n个顶点的有向图最多有n(n-1)条边。

18、在无向图中,若顶点i到顶点j有路径,则这两个顶点之间是连通的。

19、连通图的最小生成树是不惟一的。

20、邻接矩阵主要用来表示顶点之间的关系。若表示某图的邻接矩阵不是对称矩阵,则该图一定是有向图。

21、若表示某图的邻接矩阵中出现了全零行或者全零列,则该图一定是非连通图或非强连通图

22、无向图的邻接表中边结点数目一定为偶数。

23、最短路径一定是简单路径。

24、不能对强连通图进行拓扑排序。

25、存储无向图的邻接矩阵是对称的,因此可以只存储邻接矩阵的下(上)三角部分。

26、在AOE网络中可以有多条关键路径。

27、用边表示活动的网络(AOE网)的关键路径是指从源点到终点的路径长度最长的路径。

28、对一个连通图进行一次深度优先搜索可以遍访图中的所有顶点。

29、图中各个顶点的编号是人为的,不是它本身固有的,因此可以根据需要进行改变。

30、连通图的广度优先搜索中一般要采用队列来暂存刚访问过的顶点

31、图的深度优先搜索中一般要采用栈来暂存刚访问过的结点

32、有向图的遍历可采用广度优先搜索方法

33、在AOE网中,减小任一关键活动上的权值后,整个工期也就相应减少,是错误的。

34、AOE网工程工期为关键路径上的权之和

35、在关键路径上的活动都是关键活动,而关键活动也必须在关键路径上

36、任何一个关键活动提前完成,不一定将使整个工程提前完成

37、求关键路径是以拓扑排序为基础的

38、一个事件的最早开始时间同以该事件为尾的弧的活动最早开始时间相同

39、关键活动一定位于关键路径上

40、在AOV网中弧表示优先关系,是一种有向无环图,AOV网拓扑排序的结果不惟一确定

41、最小生成树可以用普里姆、克鲁斯卡尔算法。、

42、表示图的存储结构有(邻接矩阵、邻接表、邻接多重表)。

43、图的深度优先搜索算法类似于二叉树的(前序遍历)。

44、具有n个顶点、e条边的无向图采用邻接矩阵存储方法。则邻接矩阵的大小为(n×n)。

45、图的广度优先搜索算法类似于二叉树的按层次遍历

46、一个连通图的生成树是包含图中所有顶点的一个极小连通子图

47、任何一个连通图的生成树一棵或多棵

48邻接表中边结点数目为偶数的图可能是无向图,也可能是有向图。

第八章 查找 复习

1、常用处理冲突的两类方法是开放地址法和拉链法。

2、如在查找的同时对表修改,则相应的表称动态查找表。

3、二叉平衡树又称AVL 树。

4、二分查找法要求待查表的关键字的值必须有序。

5、哈希法是一种将关键字转换为存储地址的存储方法。

6、对有序表而言,采用二分查找总比采用顺序查找法速度快。

7、一般来说,用哈希函数得到的地址,冲突不可能避免,只能尽可能减少。

8、在二叉排序树中插入新结点时,不必移动其他结点,仅需改动某个结点的指针,使它由空变为非空即可。 9、只要按值有序排列的线性表采用顺序存储结构就可以采用折半查找方法。 10、分块查找过程是首先查找索引表,然后再到相应的块中具体查找记录。 11、在散列文件中进行查找不涉及关键字的比较。

12、散列冲突是指同一个关键字对应了多个不同的散列地址。

13、在采用链地址法处理冲突的散列表中,散列函数值相同的关键字是链接在同一个链表中的。 14、装载因子是散列表的一个重要参数,它反映了散列表的装满程度。 15、散列表的查找效率主要取决于处理冲突方法 、 散列函数 。

查找

概念:

查找的定义:确定一个已给的数据是否出

现在某个数据表中。

MSL :最大查找长度:最多比较次数; ASL :平均查找长度:平均比较次数; 顺序表:记录的逻辑顺序与其在计算机存

储器中存储的顺序一致的表。

顺序查找:O(n)

二分查找(折半查找):条件

有序表 ,O(log 2n) 静态查找 (线性表的查找)

二叉排序树的查找

平衡二叉树:平衡因子 平衡技术方法

动态查找

哈希函数

哈希表

(散列技术)

解决冲 突方法

开放地址

平方取中 除留余数

线性探测 线性补偿探测 随机探测

链地址法: 外链地址法

16、二分查找要求结点有序、顺序存储

17、散列函数的构造方法有直接定址法、数字分析法、平方取中法、除留余数法等几种。

18、按存储器不同,可以将排序方法分为内部排序、外部排序。

19、对于折半搜索所对应的判定树,它既是一棵二叉搜索树、理想平衡树的树.

20、散列查找是由键值(散列函数值)确定散列表中的位置,并进行存储或查找。

21、采用二分查找长度为n的线性表时,每个元素的平均查找长度为( O(log2n ))。

22、采用顺序查找长度为n的线性表时,每个元素的平均查找长度为((n+1)/2 )。

23、通常把查找过程中对关键字需要执行的( ASL )作为衡量一个查找算法效率优劣的标准。

24、在表长是N的顺序表中,实施顺序查找,在查找不成功时,与关键字比较的次数(N+1 )。

25、如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则采用(分块)查找方法。

26、线性表必须是(用向量存储的有序表),才能进行二分查找。

27、设有100个元素,用折半查找法进行查找时,最小比较次数是(1 )。

27、(散列查找)不是利用查找表中数据元素的关系进行查找的方法。

28、采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为((n+1)/2 )

29、哈希表长m=14,哈希函数H(key)=key%11。表中已有4个结点: addr(15)=4 addr(38)=5 addr(61)=6 addr(84)=7 ,其余地址为空如果用二次探测再散列处理冲突,关键字为49的结点的地址是(9 ).

30、采用分块查找时,若线性表中共有625个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分( 25)个结点最佳。

31、查找表是以(集合)为查找结构的。

32、在表长是N的顺序表中,实施顺序查找,在查找不成功时,与关键字比较的次数(N+1 )。

33、对于长度为n的顺序存储的有序表,若采用折半查找,则对所有元素的查找长度中最大的为

(log2(n+1) )的值向上取整。

34、对于长度为n的顺序存储的有序表,若采用折半查找,则对所有元素的查找长度中最大的为(log2n)

的值的向下取整加1。

35、对于长度为9的顺序存储的有序表,若采用折半查找在等概率情况下查找成功的平均查找长度为

( 25 )除以9。

36、对于长度为18的顺序存储的有序表,若采用折半查找,则查找第15个元素的查找长度为( 4 )。

37、在一棵高度为h的具有n个元素的二叉查找树中,查找一个元素的最大查找长度为( h+1 )。

38、向具有n个结点的二叉查找树中插入一个元素的时间复杂度大致为( O(log2n ) )。

39、从具有n个结点的二叉查找树中查找一个元素时,在等概率情况下进行成功查找的时间复杂度大致为(O(log2n) )。

40、向一棵AVL树插入元素时,可能引起对最小不平衡子树的调整过程,此调整分为( 4 )种旋转类型。

41、散列函数应该有这样的性质,即函数值应当以(同等)概率取其值域范围内的每一个值。

42、散列地址空间为m-1,k为表项的关键码,散列函数采用除留余数法,即Hash(k)=k%p。为了减少发生冲突的频率,一般取p为(小于m的最大质数)。

43、解决散列法中出现的冲突问题常采用的方法是(线性探查法、双散列法、开散列法)。

44、采用线性探查法解决冲突时所产生的一系列后继散列地址(可以大于或小于原散列地址)。

45、200 个元素采用二分查找时,最大的比较次数是( 8 )。

46、为了有效利用散列查找技术,需要解决问题是找一个好的散列函数、设计有效的解决冲突的方法

47、散列表的地址区间为 0 一 16 ,散列函数为 Hl ( K ) = K % 17 ,采用线性探测法解决冲突,将关键字序列 26 , 25 , 72 , 38 , 8 , 18 , 59 依次存储到散列表中。,元素 59 存放在散列表中的地址为( 11 )。

48、具有 4 层结点的二叉平衡树中结点个数至少有( 7 )。

49、散列查找是由键值(散列函数值)确定散列表中的位置,并进行存储或查找。

第九章 排序 复习

1、直接插入排序的方法要求被排序的数据必须是顺序存储。

2、监视哨的作用是在查找循环条件中用来监视下标变量是否越界。

3、具有相同的关键字的纪录之间的相对次序保持不变的方法是稳定的,否则是不稳定的。

4、堆排序是一种选择排序。

5、每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此中插入的方法叫做插入排序。

6、对于n 个记录的集合进行冒泡排序,在最坏的情况下需要的时间为O(n*n)。

7、堆是一个键值序列{k1,k2,…, kn},对i=1,2,…,|_n/2_|,满足( ki ≤k2i 且ki ≤k2i+1(2i+1≤n))

8、在顺序表 ( 3, 6, 8, 10, 12, 15, 16, 18, 21, 25, 30 ) 中,用折半法查找关键码值11,所需的关

键码比较次数为(4 )

9、当从一个小根堆(最小堆)中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它

逐层向下调整,直到调整到合适位置为止。

10、平衡的二叉排序树的任何子树都是平衡的二叉排序树。

11、一棵 m 阶 B 树中每个结点最多有 m-1 个关键码,最少有

m/2「-1个关键码。 12、在索引顺序结构的搜索中,对索引表既可以采取顺序搜索,也可以采用折半搜索。

13、堆排序是一种不稳定的排序算法。

14、快速排序算法在每一趟排序中都能找到一个元素放在其最终位置上。

15、对 n 个记录的进行快速排序,所需要的平均时间是 O ( nlog2n)。

16、具有相同的关键字的记录之间的相对次序保持不变的方法是稳定的,否则是不稳定的。

17、直接选择排序是一种不稳定的排序方法。

18、当输入序列已经基本有序时,起泡排序需要比较关键码的次数,比快速排序还要少。 内部排

插入排序 排序的定义:把一批杂乱无章的数据序列重新排列成有序

序列的过程。

直接插入排序: O(n 2) 稳定 折半插入排序: O(n 2)

稳定 希尔排序: O(n 1.3)

不稳定 交换排序 冒泡排序: O(n 2)

稳定 快速排序: O(nlog 2n) 不稳定

选择排序 简单选择排序: O(n 2) 稳定

堆排序: O(nlog 2n) 不稳定

归并排序: 二路归并排序: O(nlog 2n)

稳定

19、简单选择排序、树形选择排序、堆排序属于选择排序。

20、平均时间复杂度是O(logn)的是堆排序、快速排序、归并排序。

21、最坏情况下时间复杂度是O(n2)的是快速排序、简单排序。

22、排序方法稳定的是归并排序、计数排序、基数排序

23、下列排序方法不稳定的是堆排序、希尔排序、快速排序

24、堆排序结构分为大顶堆、小顶堆。

25、采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为((n+1)/2 ).

26、在所有的排序方法中,关键字的比较次数与记录的初始排列次序无关的是(选择排序)。

27、目前已比较为基础的内部排序中,其比较次数与待排序纪录的初始排列状态无关的是二分插入排序。

28、内部排序与外部排序的区别不在于(是否在内存中排序)。

29、排序时扫描待排序记录序列,顺次比较相邻的两个元素的大小,逆序时就交换位置。这是冒泡排序方

法的基本思想.

30、直接选择排序是不稳定的排序方法。稳定的排序方法直接插入排序、冒泡排序、归并排序

31、评价排序算法好坏的标准主要是执行时间和所辅助时间。

32、快速排序在(被排序的数据完全无序)的情况下最易发挥其长处。

33、插入排序、快速排序、选择排序、归并排序排序方法中,要求内存量最大是归并排序。

34、希尔排序、冒泡排序、选择排序、插入排序排序方法中,平均查找长度最小的是插入排序。

35、每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫做插入排序。

36、直接插入排序的方法要求被排序的数据(必须是顺序)存储。

37、对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,

直到子序列为空或只剩一个元素为止。这样的排序方法是( 快速排序 )。

38、一个对象序列的排序码为{46, 79, 56, 38, 40, 84},采用快速排序(以位于最左位置的对象为基准)

所得到的第一次划分结果为( {40, 38, 46, 79, 56, 84} )。

39、用快速排序法对包含 n 个关键字的序列进行排序,最坏情况下的排序时间复杂度为 (0( n2 ) )。

数据结构 严蔚敏C语言版 学习复习提纲

期末复习复习第一章绪论数据:计算机处理的信息总称 数据项:最小单位数据元素:最基本单数据对象:元素集合数据结构:相互之间存在一种或多种特定关系的数据元素集合。 概念:数据元素之间的关系线性结构:一对逻辑结构非线性结构数据结构 树:一对多图:多对多顺序存储结构链表存储结构存储结构。。索引。基。散列。。础知数据运算识

算法描述:指令的有限有序序列 有穷性确定性算法特性可行性算法输入输出时间复杂度 算法分析空间复杂度 、计算机算法必须具备输入、输出、可行性、确定性、有穷性5个特性。1 2、算法分析的两个主要方面是空间复杂度和时间复杂度。 3、数据元素是数据的基本单位。 4、数据项是数据的最小单位。 5、数据结构是带结构的数据元素的集合。 6、数据的存储结构包括顺序、链接、散列和索引四种基本类型。

线性表复习第二章定义 逻辑关系:前趋后继节省空间基本特点随机存取插、删效率低顺序存储结构插入基本运算删除

一个数据一个指针多占空特查找费 插、删效率无法查找前趋结单链 运算 特点:单链表+前趋指针域链表存储双向结构链表插入运算删除特点:单链表的尾结点指针循环指向附加头结点。链表运算:联接 1 、一个指向后继结点的指针、在双链表中,每个结点有两个指针域,包括一个指向前驱结点的指针 2、线性表采用顺序存储,必须占用一片连续的存储单元、线性表采用链式存储,便于进行插入和删除操作3 、线性表采用顺序存储和链式存储优缺点比较。4 5、简单算法复习栈和队列第三章.

栈的概念:在一端操作的线性表 LIFO 栈的特点:先进后出存储结 初始化push 进栈运算算法pop 出栈队列概念:在两端操作的线性表 FIFO队列特点:先进先出 假溢出顺序队列front=rear 队空:循环队列front=(rear+1)%MAXSIZE

数据结构(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 1 B. 3 2 1 C. 3 1 2 D. 1 2 3 5. 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)的联系时,称这种结构为_____________________。 2. 2.队列的插入操作是在队列的_________进行,删除操作是在队列的

数据结构 (严蔚敏C语言版) 学习、复习提纲

期末复习 第一章 绪论 复习 1、计算机算法必须具备输入、输出、可行性、确定性、有穷性5个特性。 2、算法分析的两个主要方面是空间复杂度和时间复杂度。 3、数据元素是数据的基本单位。 4、数据项是数据的最小单位。 5、数据结构是带结构的数据元素的集合。 6、数据的存储结构包括顺序、链接、散列和索引四种基本类型。 数据结构 算 法 数据:计算机处理的信息总称 数据项:最小单位 数据元素:最基本单位 数据对象:元素集合 数据结构:相互之间存在一种或 多种特定关系的数据元素集合。 概念:数据元素之间的关系 线性结构:一对一 非线性结构 树:一对多 图:多对多 顺序存储结构 链表存储结构 索引。。。 散列。。。 算法描述:指令的有限有序序列 有穷性 确定性 可行性 输入 输出 时间复杂度 空间复杂度

第二章 线性表 复习 1、在双链表中,每个结点有两个指针域,包括一个指向前驱结点的指针 、一个指向后继结点的指针 2、线性表采用顺序存储,必须占用一片连续的存储单元 3、线性表采用链式存储,便于进行插入和删除操作 4、线性表采用顺序存储和链式存储优缺点比较。 5、简单算法 第三章 栈和队列 复习 定义 逻辑关系:前趋 后继 节省空间 随机存取 插、删效率低 插入 删除

1、 栈和队列的异同点。 2、 栈和队列的基本运算 3、 出栈和出队 4、 基本运算 第四章 串 复习 存储结构 栈的概念:在一端操作的线性表 运算算法 栈的特点:先进后出 LIFO 初始化 进栈push 出栈 pop 顺序队列 循环队列 队列概念:在两端操作的线性表 假溢出 链队列 队列特点:先进先出 FIFO 基本运算 顺序: 链队: 队空:front=rear 队满:front=(rear+1)%MAXSIZE 队空: rear 初始化 判空 进队 出队 取队首元素

严蔚敏数据结构(C语言版)知识点总结笔记课后答案

第1章绪论 1.1复习笔记 一、数据结构的定义 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。 二、基本概念和术语 数据 数据(data)是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称,它是计算机程序加工的“原料”。 2.数据元素 数据元素(data element)是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 3.数据对象 数据对象(data object)是性质相同的数据元素的集合,是数据的一个子集。 4.数据结构 数据结构(data structure)是相互之间存在一种或多种特定关系的数据元素的集合。 (1)数据结构的基本结构 根据数据元素之间关系的不同特性,通常有下列四类基本结构: ① 集合。数据元素之间除了“同属于一个集合”的关系外,别无其它关系。 ② 线性结构。数据元素之间存在一个对一个的关系。 ③ 树形结构。数据元素之间存在一个对多个的关系。 ④ 图状结构或网状结构。数据元素之间存在多个对多个的关系。

如图1-1所示为上述四类基本结构的关系图。 图1-1 四类基本结构的关系图 (2)数据结构的形式定义 数据结构的形式定义为:数据结构是一个二元组Data_Structure==(D,S) 其中:D表示数据元素的有限集,S表示D上关系的有限集。 (3)数据结构在计算机中的表示 数据结构在计算机中的表示(又称映象)称为数据的物理结构,又称存储结构。它包括数据元素的表示和关系的表示。 ① 元素的表示。计算机数据元素用一个由若干位组合起来形成的一个位串表示。 ② 关系的表示。计算机中数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象。并由这两种不同的表示方法得到两种不同的存储结构:顺序存储结构和链式存储结构。 a.顺序映象的特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。 b.非顺序映象的特点是借助指示元素存储地址的指针(pointer)表示数据元素之间的逻辑关系。 5.数据类型 数据类型(Data type)是一个值的集合和定义在这个值集上的一组操作的总称。按“值”的不同特性,高级程序语言中的数据类型可分为两类:一类是非结构的原子类型,值是不可分解的;另一类是结构类型,值是由若干成分按某种结构

严蔚敏《数据结构》考研C语言版考研笔记与考研真题

严蔚敏《数据结构》考研C语言版考研笔记与考研真 题 第一部分考研真题精选 一、单项选择题 1若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是()。[计算机统考(408)2010年研] 【答案】D查看答案 【解析】4个选项所给序列的进、出栈操作序列分别为: 选项A:Push,Push,Push,Push,Pop,Pop,Push,Pop,Pop,Push,Pop,Pop 选项B:Push,Push,Push,Pop,Pop,Push,Pop,Pop,Push,Pop,Push,Pop 选项C:Push,Push,Pop,Push,Pop,Pop,Push,Push,Pop,Push,Pop,Pop 选项D:Push,Pop,Push,Push,Push,Push,Push,Pop,Pop,Pop,Pop,Pop 按照题目要求,不允许连续三次进行退栈操作,所以选项D所给序列为不可能得到的出栈顺序。

2若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b,c,d,e,a,则根结点的孩子结点()。[计算机统考(408)2012年研] A.只有e B.有e、b C.有e、c D.无法确定 【答案】A查看答案 【解析】由题目可知,若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b,c,d,e,a,其中a为这棵二叉树的根结点,接下来,在前序遍历的第二个结点为e,而后序遍历的倒数第二个结点为e,说明a的孩子结点只有e。 3循环队列放在一维数组A[0..M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空,下列判断队空和队满的条件中,正确的是()。[计算机统考(408)2014年研] A.队空:end1==end2;队满:end1==(end2+1)mod M B.队空:end1==end2;队满:end2==(end1+1)mod (M-1)C.队空:end2==(end1+1)mod M;队满:end1==(end2+1)mod M D.队空:end1==(end2+1)mod M;队满:end2==(end1+1)mod (M -1)

数据结构重难点

【数据结构】清华版严蔚敏《数据结构》重点要点 第二章线性表 1线性表的特点及逻辑结构2.线性表的顺序存储结构及基本操作(插入、删除、定位) 本章难点 线性表的顺序存储结构,基本操作在顺序表上的实现及时间复杂度的计算。 内容和要求 线性结构特点:在数据元素的非空有限集中存在唯一的一个被称作“第一个”的数据元素,存在唯一的一个被称作“最后一个”的数据元素,除第一个外,集合中的每个数据元素均只有一个前驱,除最后一个外,集合中的每个数据元素均只有一个后继。 §2.1 线性表的定义和逻辑结构 定义:一个线性表是n 个数据元素的有限序列。 §2.2 线性表的顺序存储结构 一、顺序表: 1、定义:用一组地址连续的存储单元存放一个线性表叫顺序表。 2、元素地址计算方法: LOC(ai)=LOC(a1)+(i-1)*L LOC(ai+1)=LOC(ai)+L 其中: L—一个元素占用的存储单元个数 LOC(ai)—线性表第i 个元素的地址 3、特点:实现逻辑上相邻—物理地址相邻;实现随机存取 4、实现:可用C 语言的一维数组实现 1)插入定义:线性表的插入是指在第I(1£i £ n+1)个元素之前插入一个新的数据元素x,使长度为n 的线性表。算法时间复杂度T(n) 2)删除定义:线性表的删除是指将第i(1£i £ n)个元素删除,使长度为n 的线性表。算法评价 5、顺序存储结构的优缺点 优点:逻辑相邻,物理相邻;可随机存取任一元素;存储空间使用紧凑 缺点:插入、删除操作需要移动大量的元素;预先分配空间需按最大空间分配,利用不充分;表容量难以扩充。 习题第19页1,4 第三章链式存储结构 本章重点 1.线性表的链式存储结构的特点2.单链表的基本运算及实现,循环链表,双向链表 单链表的基本运算(建立、查找、插入、删除)实现及算法 内容和要求 §3.1线性表的链式存储结构 特点:用一组任意的存储单元存储线性表的数据元素利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素 每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息结点 数据域:元素本身信息 指针域:指示直接后继的存储位置 实现 单链表的基本运算: 单链表特点

严蔚敏数据结构题集完整

严蔚敏数据结构题集完整 严蔚敏数据结构题集是计算机科学领域中一本非常著名的教材,它涵盖了数据结构的基本理论和应用,备受学者们的推崇。本文将对该题集进行完整的介绍和分析,包括其内容、知识点、例题和解题思路。首先,严蔚敏数据结构题集主要包括线性结构、树形结构、图形结构、排序和搜索等方面的内容。这些知识点是计算机科学中非常重要的基础理论,对于从事软件开发、大数据处理、等领域的专业人士来说都是必须要掌握的。 在线性结构中,严蔚敏教授详细介绍了数组、链表、栈、队列、串等基本数据结构的特点和应用,并通过丰富的例题和思考题引导读者深入理解这些知识点。在树形结构中,严教授重点讲解了二叉树、树、森林等数据结构的定义、性质和操作,其中还包括了树的遍历、树的转换等经典问题。在图形结构中,严教授介绍了图的定义、图的遍历、最小生成树、最短路径等基本问题,并给出了相应的算法实现。在排序和搜索部分,严教授详细介绍了各种排序算法和搜索算法的原理和实现,并通过实例进行演示。 在例题和思考题的设置上,严蔚敏数据结构题集非常具有代表性。这些题目既包括基础理论的考察,也涉及实际应用的拓展。通过这些题目的练习,读者可以更好地理解数据结构的基本概念和方法,提高解决实际问题的能力。

在解题思路上,严蔚敏教授提供了清晰的指导和分析。对于每个问题,她都会从问题定义、问题解析、算法设计、代码实现等方面进行详细的讲解。这使得读者能够更好地理解问题,掌握解决问题的方法和技巧。 总的来说,严蔚敏数据结构题集是一本非常优秀的教材,它详细介绍了数据结构的基本理论和应用,并通过丰富的例题和思考题引导读者深入理解这些知识点。对于学习计算机科学的学生和专业人士来说,这本书都是一本非常有价值的参考书。 严蔚敏数据结构题集完整答案doc 标题:严蔚敏数据结构题集完整答案 严蔚敏教授是数据结构领域的知名专家,她的数据结构题集也是广大学生和爱好者们学习的热门资料。本文将为大家提供严蔚敏数据结构题集的完整答案,并依次对每个题目进行详细解析。 第一题:给定一个长度为n的线性表,现要在该线性表上执行删除操作,使得删除后的线性表仍然有序,问最多可以删除多少元素? 答案:当线性表已经有序时,最多可以删除n-1个元素。因为删除一个元素后,线性表仍然有序,所以删除的元素个数不能超过线性表的长度。 第二题:给定一个二叉树,求出它的最大深度。

严蔚敏版数据结构复习题

数据结构复习题集 一、判断题 1 .线性表的长度是线性表所占用的存储空间的大小。(F) 2 .双循环链表中,任意一结点的后继指针均指向其逻辑后继。(F) 3 .在对链队列做出队操作时,不会改变front指针的值。(F) 4 .如果两个用含有相同的字符,则说它们相等。(F) 5 .如果二叉树中某结点的度为1,则说该结点只有一棵子树。(T) 6 .已知一棵树的先序序列和后序序列,一定能构造出该树。(F) 7 .图G的一棵最小代价生成树的代价未必小于G的其它任何一棵生成树的代价。(T) 8 .图G的拓扑序列唯一,则其弧数必为n-1(其中n为顶点数)。(F) 9 .对一个堆按层次遍历,不一定能得到一个有序序列。(T) 10 .直接选择排序算法满足:其时间复杂度不受数据的初始特性影响,为O(n2)(T) 11 .线性表的逻辑顺序与物理顺序总是一致的。(F) 12 .线性表的顺序存储表示优于链式存储表示。(F) 13 .线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连 续。(T) 14.二维数组是其数组元素为线性表的线性表。(F)

15 .每种数据结构都应具备三种基本运算:插入、删除和搜 索。(T) 16 .(101,88,46,70,34,39,45,58,66,10)是堆;(T) 17 .将一棵树转换成二叉树后,根结点没有左子树;(F) 18 .对不含相同元素的同一输入序列进行两组不同的、合法的入栈和出栈组合操作,所得的输出序列也一定相同;(F) 19 .哈夫曼树是带权外部路径长度最短的树,路径上权值较大的结点离根较近 (T) 20 .用一组地址连续的存储单元存放的元素一定构成线性表。(F) 21 .堆栈、队列和数组的逻辑结构都是线性表结构。(T) 22 .给定一组权值,可以唯一构造出一棵哈夫曼树。(F) 23 .相对于索引文件的基本数据,索引表包含的信息量相对少得多,因此。索引表可以常驻内存。(T) 24 .在平均情况下,快速排序法最快,堆积排序法最节省空间。(T) 25 .快速排序法是一种稳定性排序法。(F) 二.选择题: 1 .一个栈的输入序列为12345,则下列序列中是栈的输出序列的是(A)。 A.23415 B.54132 C.31245 D.1425 3 2 .设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则 其元素个数为(D)。

《数据结构》(C语言版)严蔚敏著-数据结构实验指导

《数据结构》(C语言版)严蔚敏著-数据结构实验指导/学年第学期 姓名:______________学号:______________班级:______________指导教师:______________ 数学与统计学院 2022 预备实验C语言的函数数组指针结构体知识 一、实验目的 1、复习C语言中函数、数组、指针、结构体与共用体等的概念。 2、熟悉利用C语言进行程序设计的一般方法。 二、实验预习 说明以下C语言中的概念1、函数: 2、数组: 3、指针: 4、结构体 5、共用体 三、实验内容和要求 1、调试程序:输出100以内所有的素数(用函数实现)。#include intiprime(intn){/某判断一个数是否为素数某/intm;for(m=2;m某m<=n;m++)

if(n%m==0)return0;return1; } intmain(){/某输出100以内所有素数某/ inti;printf(\for(i=2;i<100;i++) if(iprime(i)==1)printf(\return0; } 运行结果: 2、调试程序:对一维数组中的元素进行逆序排列。 #include#defineN10intmain(){ 2 inta[N]={0,1,2,3,4,5,6,7,8,9},i,temp; printf(\for(i=0;i temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp; printf(\for(i=0;i return0;} 运行结果: 3、调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。要求从键盘上输入一个二维数组,当鞍点存在时,把鞍点找出来。#include

最新清华大学严蔚敏版数据结构考研要点(精华版)

1数据(Data):是客观事物的符号表示。在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素(Data Element):是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。 一个数据元素可由若干个数据项(Data Item)组成。数据项是数据的不可分割的最小单位。数据项是对客观事物某一方面特性的数据描述。 数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。如字符 集合C={ ‘ A , ' B'。,' C,…} 数据结构(Data Structure):是指相互之间具有(存在)一定联系(关系)的数据元素的集合。元素之间的相互联系(关系)称为逻辑结构。数据元素之间的逻辑结构有四种基本类型,如图1-3所示。 ①集合:结构中的数据元素除了“同属于一个集合”外,没有其它关系。 ②线性结构:结构中的数据元素之间存在一对一的关系。 ③树型结构:结构中的数据元素之间存在一对多的关系。 ④图状结构或网状结构:结构中的数据元素之间存在多对多的关系。 2、顺序结构:数据元素存放的地址是连续的; 链式结构:数据元素存放的地址是否连续没有要求。 数据的逻辑结构和物理结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。 在C语言中,用一维数组表示顺序存储结构;用结构体类型表示链式存储结构。 3、C语言中用带指针的结构体类型来描述 typedef struct Lnode { ElemType data; /*数据域,保存结点的值*/ struct Ln ode *n ext; /* 指针域*/ }LNode; /*结点的类型*/ 4、循环队列为空:fron t=rear 。 循环队列满:(rear+1)%MAX_QUEUE_SIZE =front。 5、性质1:在非空二叉树中,第i层上至多有2i-1个结点(i = 1)。 性质2:深度为k的二叉树至多有2k-1个结点(k± 1)。 性质3:对任何一棵二叉树,若其叶子结点数为n0,度为2的结点数为n2,则n0= n2+1。 一棵深度为k且有2k-1个结点的二叉树称为满二叉树(Full Bin ary Tree)。 完全二叉树的特点:若完全二叉树的深度为k ,则所有的叶子结点都出现在第k层或k-1 层。对于任一结点,如果其右子树的最大层次为I,则其左子树的最 大层次为I或1+1。

清华严蔚敏《数据结构》的全部代码实现C语言

/*c1.h(程序名)*/ #include #include #include /* malloc()等 */ #include /* INT_MAX等 */ #include /* EOF(=^Z或F6),NULL */ #include /* atoi() */ #include /* eof() */ #include /* floor(),ceil(),abs() */ #include /* exit() */ /* 函数结果状态代码 */ #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 /* #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 */ typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */ typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */

/* algo2-1.c 实现算法2.1的程序 */ #include"c1.h" typedef int ElemType; #include"c2-1.h" /*c2-1.h 线性表的动态分配顺序存储结构 */ #define LIST_INIT_SIZE 10 /* 线性表存储空间的初始分配量 */ #define LISTINCREMENT 2/* 线性表存储空间的分配增量 */ typedef struct { ElemType*elem; /* 存储空间基址 */ int length; /* 当前长度 */ int listsize; /* 当前分配的存储容量(以sizeof(ElemType)为单位) */ }SqList; #include"bo2-1.c" /* bo2-1.c 顺序表示的线性表(存储结构由c2-1.h定义)的基本操作(12个) */ Status InitList(SqList*L) /* 算法2.3 */ { /* 操作结果:构造一个空的顺序线性表 */ (*L).elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!(*L).elem)

数据结构习题集答案(C语言版严蔚敏)

第1章绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结

构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值 Put(&C,k,e) 操作结果:改变复数C 的第k 元的值为e

《数据结构》课后答案(C语言版)(严蔚敏_吴伟民著)

第1章 绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C

数据结构清华大学出版社严蔚敏吴伟民编著

第一章绪论 1、数据构造是计算机中存储、组织数据的方式。精心选择的数据 构造可以带来最优效率的算法。 2、程序设计=算法+数据构造 3、解决问题方法的效率: ●跟数据的组织方式有关 ●跟空间的利用效率有关 ●跟算法的巧妙程度有关 4、数据:所有能输入到计算机中,且被计算机处理的符号的集合, 是计算机操作对象的总称; 是计算机处理的信息的某种特定的符号表示形式。 5、数据元素:数据中的一个“个体〞,数据构造中讨论的根本单 位。相当于“记录〞,在计算机程序常作为一个整体考虑和处 理。 6、数据项: 相当于记录的“域〞, 是数据的不可分割的最小单位, 如学号。数据元素是数据项的集合。 7、数据对象:性质一样的数据元素的集合. 例如: 所有运发动的记录集合 8、数据构造:是相互间存在某种关系的数据元素集合。 9、数据构造是带构造的数据元素的集合。 10、不同的关系构成不同的构造。

11、次序关系: {|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):是指一个 数学模型以及定义在此数学模型上的一组操作。

清华严蔚敏《数据结构》的全部代码实现C语言

/* c1.h (程序名) */ #include #include #include /* malloc()等 */ #include /* INT_MAX等 */ #include /* EOF(=^Z或F6),NULL */ #include /* atoi() */ #include /* eof() */ #include /* floor(),ceil(),abs() */ #include /* exit() */ /* 函数结果状态代码 */ #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 /* #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 */ typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */ typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */

/* algo2-1.c 实现算法2.1的程序 */ #include"c1.h" typedef int ElemType; #include"c2-1.h" /*c2-1.h 线性表的动态分配顺序存储结构 */ #define LIST_INIT_SIZE 10 /* 线性表存储空间的初始分配量 */ #define LISTINCREMENT 2/* 线性表存储空间的分配增量 */ typedef struct { ElemType*elem; /* 存储空间基址 */ int length; /* 当前长度 */ int listsize; /* 当前分配的存储容量(以sizeof(ElemType)为单位) */ }SqList; #include"bo2-1.c" /* bo2-1.c 顺序表示的线性表(存储结构由c2-1.h定义)的基本操作(12个) */ Status InitList(SqList*L) /* 算法2.3 */ { /* 操作结果:构造一个空的顺序线性表 */ (*L).elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!(*L).elem) exit(OVERFLOW); /* 存储分配失败 */ (*L).length=0; /* 空表长度为0 */ (*L).listsize=LIST_INIT_SIZE; /* 初始存储容量 */ return OK; } Status DestroyList(SqList*L) { /* 初始条件:顺序线性表L已存在。操作结果:销毁顺序线性表L */ free((*L).elem); (*L).elem=NULL; (*L).length=0; (*L).listsize=0; return OK; } Status ClearList(SqList*L) { /* 初始条件:顺序线性表L已存在。操作结果:将L重置为空表 */ (*L).length=0; return OK; } Status ListEmpty(SqList L)

相关文档
相关文档 最新文档