数据结构试题_试卷一_已填答案
数据结构十套试卷答案

数据结构试卷(一)参考答案一、选择题(每题2分,共20分)1.A2.D3.D4.C5.C6.D7.D8.C9.D 10.A 二、填空题(每空1分,共26分)1. 正确性 易读性 强壮性 高效率2. O(n)3. 9 3 34. -1 3 4 X * + 2 Y * 3 / -5. 2n n-1 n+16. e 2e7. 有向无回路8. n(n-1)/2 n(n-1)9. (12,40) ( ) (74) (23,55,63) 10.增加111.O(log 2n) O(nlog 2n) 12.归并三、计算题(每题6分,共24分)1. 线性表为:(78,50,40,60,34,90)2. 邻接矩阵:⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡0111010101110111010101110邻接表如图11所示:图113. 用克鲁斯卡尔算法得到的最小生成树为: (1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)204. 见图12图124 4 4 4 4 2 2 25 552 2 8 84 352 83 4四、读算法(每题7分,共14分)1.(1)查询链表的尾结点(2)将第一个结点链接到链表的尾部,作为新的尾结点(3)返回的线性表为(a2,a3,…,a n,a1)2.递归地后序遍历链式存储的二叉树。
五、法填空(每空2分,共8 分)true BST->left BST->right六、编写算法(8分)int CountX(LNode* HL,ElemType x){ int i=0; LNode* p=HL;//i为计数器while(p!=NULL){ if (P->data==x) i++;p=p->next;}//while, 出循环时i中的值即为x结点个数return i;}//CountX数据结构试卷(二)参考答案一、选择题1.D2.B3.C4.A5.A6.C7.B8.C二、填空题1.构造一个好的HASH函数,确定解决冲突的方法2.stack.top++,stack.s[stack.top]=x3.有序4.O(n2),O(nlog2n)5.N0-1,2N0+N16.d/27.(31,38,54,56,75,80,55,63)8.(1,3,4,5,2),(1,3,2,4,5)三、应用题1.(22,40,45,48,80,78),(40,45,48,80,22,78)2.q->llink=p; q->rlink=p->rlink; p->rlink->llink=q; p->rlink=q;3.2,ASL=91*1+2*2+3*4+4*2)=25/94.树的链式存储结构略,二叉树略5.E={(1,3),(1,2),(3,5),(5,6),(6,4)}6.略四、算法设计题1.设有一组初始记录关键字序列(K1,K2,…,K n),要求设计一个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于K i,右半部分的每个关键字均大于等于K i。
数据结构试题集(包含答案-完整版)

数据结构试题集(包含答案-完整版)数据结构试题集(包含答案-完整版)1. 单选题1) 数据结构是一种()。
a) 存储结构b) 算法c) 数据模型d) 网络答案:c) 数据模型解析:数据结构是一种用于组织和存储数据的方式,描述了数据之间的关系以及对数据的操作。
2) 以下哪种数据结构可以通过索引直接访问元素?a) 链表b) 队列c) 栈d) 数组答案:d) 数组解析:数组是一种线性数据结构,可以通过索引直接访问指定位置的元素。
2. 多选题1) 哪些数据结构属于非线性结构?()a) 队列b) 树c) 栈d) 图答案:b) 树d) 图解析:线性结构中的元素存在一对一的关系,非线性结构中的元素存在一对多或多对多的关系,树和图属于非线性结构。
2) 下列哪些操作可以在栈上进行?()a) 入栈b) 出栈c) 查找d) 删除答案:a) 入栈b) 出栈解析:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。
3. 简答题1) 请简要介绍线性表和非线性表。
答案:线性表是数据元素的一个有限序列,元素之间存在一对一的关系。
非线性表是指元素之间存在一对多或多对多的关系,如树和图。
2) 请解释什么是时间复杂度和空间复杂度。
答案:时间复杂度是衡量算法执行效率的度量,表示算法的运行时间随输入规模增长的速度。
空间复杂度是指算法执行过程中所需的存储空间随输入规模增长的速度。
4. 编程题题目:实现一个栈,包含push、pop和getMin三个操作,要求时间复杂度为O(1)。
答案:class MinStack:def __init__(self):self.stack = []self.min_stack = []def push(self, x):self.stack.append(x)if not self.min_stack or x <= self.min_stack[-1]:self.min_stack.append(x)def pop(self):if self.stack.pop() == self.min_stack[-1]:self.min_stack.pop()def getMin(self):return self.min_stack[-1]解析:在栈的基础上,使用一个辅助栈min_stack来记录当前栈中的最小值。
《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案第一部分:选择题(每题2分,共20分)1. 下面哪个数据结构是线性结构?A. 树B. 图C. 队列D. 网络流2. 下面哪个数据结构用于实现广度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆3. 下面哪个数据结构用于实现深度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆4. 下面哪个数据结构用于实现快速排序算法?A. 栈B. 队列C. 散列表D. 堆5. 下面哪个数据结构用于实现优先队列?A. 栈B. 队列C. 散列表D. 堆6. 下面哪个数据结构用于实现哈希表?A. 栈B. 队列C. 散列表D. 堆7. 下面哪个数据结构用于实现最小树算法?A. 栈B. 队列C. 散列表D. 堆8. 下面哪个数据结构用于实现拓扑排序算法?A. 栈B. 队列C. 散列表D. 堆9. 下面哪个数据结构用于实现最短路径算法?A. 栈B. 队列C. 散列表D. 堆10. 下面哪个数据结构用于实现并查集算法?A. 栈B. 队列C. 散列表D. 堆第二部分:填空题(每题2分,共20分)1. 链表是一种______数据结构。
2. 二叉树的节点最多有______个子节点。
3. 堆是一种特殊的______。
4. 散列表的查找效率取决于______。
5. 图的遍历算法包括______和______。
6. 快速排序算法的平均时间复杂度为______。
7. 哈希表中的冲突解决方法有______和______。
8. 最小树算法包括______和______。
9. 最短路径算法包括______和______。
10. 并查集算法用于解决______问题。
第三部分:简答题(每题10分,共50分)1. 请简述栈和队列的区别。
2. 请简述二叉搜索树的特点。
3. 请简述哈希表的原理。
4. 请简述图的深度优先搜索算法。
5. 请简述最小树算法的原理。
第四部分:编程题(每题20分,共50分)1. 编写一个函数,实现链表的插入操作。
数据结构试题及答案(1)

数据结构试题一、单选题1、在数据结构的讨论中把数据结构从逻辑上分为(C )A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构。
2、采用线性链表表示一个向量时,要求占用的存储空间地址(D )A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。
A nB n/2C (n-1)/2D (n+1)/24、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。
A s→link = p→link; p→link = s;B p→link = s; s→link = q;C p→link = s→link; s→link = p;D q→link = s; s→link = p;5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。
A 起泡排序B 堆排序C 锦标赛排序D 快速排序6、设有两个串t和p,求p在t中首次出现的位置的运算叫做( B )。
A 求子串B 模式匹配C 串替换D 串连接7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。
所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是( C )。
A 80B 100C 240D 2708、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。
A 栈B 队列C 循环队列D 优先队列9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( C )。
10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。
A ( front - rear + 1) % mB ( rear - front + 1) % mC ( front - rear + m) % mD ( rear - front + m) % m11、一个数组元素a[i]与( A )的表示等价。
数据结构试题及答案

数据结构试题及答案⼀、选择题(共10题,每题1分,共10分)1.下⾯关于线性表的叙述中,错误的是哪⼀个?()A.线性表采⽤顺序存储,必须占⽤⼀⽚连续的存储单元B.线性表采⽤顺序存储,便于进⾏插⼊和删除操作C.线性表采⽤链接存储,不必占⽤⼀⽚连续的存储单元D.线性表采⽤链接存储,便于插⼊和删除操作2.在⼀个单链表中,已知q所指结点是p所指结点的前驱,若在p和q之间插⼊s所指结点,则执⾏的操作是()。
A. s->next=p->next;p->next=s;B. q->next=s;s->next=p;C. p->next=s->next;s->next=p;D. p->next=s;s->next=q;3.设有三个元素X,Y,Z顺序进栈,下列得不到的出栈排列是( )。
A.XYZ B. YZX C. ZXY D. ZYX4.若⽤⼀个长度为6的数组来实现循环队列,且当前rear和front的值分别为0和3,则从队列中删除⼀个元素,再增加两个元素后,rear和front的值分别是( )。
A.1和5 B.2和4 C.4和2 D. 5和15.下列说法中正确的是()。
A.⼆叉树就是度为2的树 B.⼆叉树中不存在度⼤于2的结点C.⼆叉树中⾄少有⼀个结点的度为2 D.⼆叉树中任何⼀个结点的度都为2 6.在具有n个结点的⼆叉链表中,共有()个空指针。
A. nB. n-1C. n+1D. 不确定7.根据⼆叉树与树的转换关系可知,深度为h的满⼆叉树对应的森林由()棵树构成。
A.1 B.log2n C. h/2 D. h8.在⼀个⽆向图中,所有顶点的度数之和等于所有边数的()倍。
A.1/2 B.1 C. 2 D. 49.对17个元素的查找表做折半查找,则查找长度为5的元素下标依次是()。
A.8,17 B.5,10,12 C.9,16 D.9,1710.关于排序,下列说法中正确的是()。
数据结构试卷试卷及答案5套

数据结构试卷试1一、解释下列术语(每小题4分,共20分)1. 头指针2. 二叉排序树的定义3. 头结点4. 数据的逻辑结构5. 排序方法的稳定性二、选择填空(每小题2分,共20分)(在每小题的4 个备选答案中,选出一个正确的答案,多选少选均不得分)1. 在一个长度为n的顺序表中,在第i个元素(1≤i≤n+1)之前插入一个新元素时顺向后移动( ) 个元素A.n-iB. n-i+1C. n-i-1D.i2. 某个栈的输入序列为1,2,3,4,下面的四个序列中( )不可能是它的输出序列A.1,2,3,4B.2,3,4,1C. 4,3,2,1D.3,4, 1,23. 对二叉排序进行( )遍历可以得到结点的排序序列A.前序B.中序C. 后序D.按层次4.有64个结点的完全二叉树的深度为()。
A 8B 7C 6D 55.折半查找法的时间复杂度是( )A.(n2)B.O(n)C. O(n㏒n)D. O(㏒n)6.A(1:5,1:6)的每个元素占5个单元,将其按行优先次序储存在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为()。
A 1140B 1145C 1120D 11257. 有n个叶子结点的哈夫曼树的结点总数为()。
A 不确定B 2nC 2n+1D 2n-18. 已知某二叉树的后序遍历序列是dabec, 中序遍历序列是debac, 则它的前遍历序列是()。
A acbedB decabC deabcD cedba9.若循环队列用数组A(0:m-1)存放其元素值,已知其头、尾指针分别是f和r,则当前队列中的元素个数是()。
A (r-f+m)mod mB r-f+1C r-f-1D r-f10. 一个二叉树的先序序列和后序序列正好相反,则该二叉树一定是()的二叉树(树中结点个数大于1)。
A 空或只有一个结点B 高度等于其结点数C 任一结点无左孩子 D任一结点无右孩子三,判断题(每小题2分,对的打√,错的打×,共10分)1.若图G的最小生成树不唯一,则G的边数一定多于n-1,并且权值最小的边有多条(其中n为G的顶点数)。
数据结构试题集(8套卷子+答案)

《数据结构》试卷一一、填空题:(共20分)1、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用存储结构。
2、队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是。
3、在一棵二叉树中,度为0的结点个数为n0,度为2的个数为n2,则n0= 。
4、二叉树的前序遍历序列等同于该二叉树所对应森林的遍历序列5、对一棵二叉排序树,若以遍历该树,将得到一个以关键字递增顺序排列的有序序列。
6、三个结点a,b,c组成二叉树,共有种不同的结构。
7、在AVL树中,由于在A结点的右孩子的右子树上插入结点,使A结点的平衡因子由-1变为-2,使其失去平衡,应采用型平衡旋转。
8、图的遍历有两种,它们是。
9、堆排序的时间复杂度为。
10、在含有N个结点的二叉链表中有空链域,通常用这些空链域存储线索,从而得另一种链式存储结构----线索链表。
二、单项选择题(共20分)1、若进栈序列为1,2,3,4,假定进栈和出栈可以穿插进行,则可能的出栈序列是()(A)2,4,1,3(B)3,1,4,2(C)3,4,1,2(D)1,2,3,42、有一棵非空的二叉树,(第0层为根结点),其第i层上最多有多少个结点?()(A)2i(B)21-i(C)21+i(D) i3、设电文中出现的字母为A,B,C,D,E,每个字母在电文中出现的次数分别为9,27,3,5,11,按huffman编码,则字母A编码为()(A)10(B)110(C)1110(D)11114、下面关于数据结构的叙述中,正确的叙述是()(A)顺序存储方式的优点是存储密度大,且插、删除运算效率高(B)链表中每个结点都恰好包含一个指针(C)包含n个结点的二叉排序树的最大检索长度为logn2(D)将一棵树转为二叉树后,根结点无右子树5、程序段:y:=0while n>=(y+1)*(y+1) doy:=y+1enddo的时间复杂度为()(A)O(n) (B)O(n2) (C)O(n2/1) (D)O(1)6、排序方法中,关键码比较的次数与记录的初始排列无关的是( )(A) shell排序 (B) 归并排序 (C) 直接插入排序 (D) 直接选择排序7、数组q[0..n-1]作为一个环行队列,f 为当前队头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数总小于n,则队列中元素个数为( )(A) r-f (B) n+f-r (C) n+r-f (D) (n+r-f) mod n8、为了有效的利用散列查找技术,需要解决的问题是:( )Ⅰ:找一个好的散列函数Ⅱ:设计有效的解决冲突的方法Ⅲ:用整数表示关键码值(A) Ⅰ和Ⅲ (B) Ⅰ和Ⅱ (C) Ⅱ和Ⅲ (D) Ⅰ,Ⅱ和Ⅲ9、引入线索二叉树的目的是()(A) 加快查找结点的前驱或后继的速度(B) 为了能在二叉树中方便的进行插入与删除(C) :为了能方便的找到双亲(D) 使二叉树的遍历结果唯一10、用二分(折半)查找表的元素的速度比用顺序法()(A) 必然快(B) 必然慢(C): 相等(D): 不能确定三、简答题:(共40分)1、已知某二叉树按中序遍历序列为BFDAEGC,按前序遍历序列为ABDFCEG,试画出该二叉树形状,并写出它的后序遍历序列。
数据结构试题及答案(1)A

数据结构试卷一、填空殖(每空1分共20分)1.数据的物理结构主要包括___顺序存储结构__________和_链式_____________两种情况。
2.设一棵完全二叉树中有500个结点,则该二叉树的深度为_______9___;若用二叉链表作为该完全二叉树的存储结构,则共有______501_____个空指针域.3.设输入序列为1、2、3,则经过栈的作用后可以得到_____6______种不同的输出序列。
4.设有向图G用邻接矩阵A[n][n]作为存储结构,则该邻接矩阵中第i行上所有元素之和等于顶点i的___出度_____,第i列上所有元素之和等于顶点i的____入度____。
5.设哈夫曼树中共有n个结点,则该哈夫曼树中有___0_____个度数为1的结点。
6.设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为____e=d_____。
7.____中序______遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序).8.设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较_____7___次就可以断定数据元素X是否在查找表中。
9.不论是顺序存储结构的栈还是链式存储结构的栈,其入栈和出栈操作的时间复杂度均为______1______。
10.设有n个结点的完全二叉树,如果按照从自上到下、从左到右从1开始顺序编号,则第i个结点的双亲结点编号为___i/2_________,右孩子结点的编号为____2i+1_______。
11.设一组初始记录关键字为(72,73,71,23,94,16,5),则以记录关键字72为基准的一趟快速排序结果为_____5 16 71 23 72 94 73______。
12.设有向图G中有向边的集合E={〈1,2〉,<2,3>,〈1,4〉,〈4,2>,〈4,3〉},则该图的一种拓扑序列为___1 4 2 3___。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模拟试题一模拟试题一一、选择题(30分)1.组成数据的基本单位是( C )。
A)数据项B)数据类型C)数据元素 D)数据变量2.线性表采用链式存储结构时,要求内存中可用存储单元的地址( D )。
A)必须是连续的B)部分地址必须是连续的C)一定是不连续的 D)连续或不连续都可以3.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( B )。
A)O(1) B)O(n) C) O(n2) D) O(nlog2n)4.栈结构通常采用的两种结构是( A )。
A)顺序存储结构和链表存储结构B)散列方式和索引方式C)链表存储结构和数组D)线性链表结构和非线性存储结构5.表达式a*(b+c)-d的后缀表达式是( B )。
A) abcd+- B)abc+*d- C)abc*+d- D)一十*abcd6.栈和队列的共同特点是(C )。
A)都是先进先出B)都是先进后出C)只允许在端点处插入和删除元素 D)没有共同点7.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为( B )。
A) GEDHFBCA B) DGEBHFCAC) ABCDEFGH D) ACBFEDHG8.链表不具有的特点是( B ),A)不必事先估计存储空间 B)可随机访问任一元素C)插入删除不需要移动元素 D)所需空间与线性表长度成正比9.在深度为5的满二叉树中,叶子结点的个数为( C )。
A) 32 B) 31 C) 16 D) 1510.最简单的交换排序方法是( D )。
A)快速排序 B)选择排序 C)堆排序 D)冒泡排序11.数据结构是研究数据的( C )以及它们之间的相互关系。
A)理想结构,物理结构 B)理想结构,抽象结构C)物理结构,逻辑结构 D)抽象结构,逻辑结构12.线性表采用链式存储时,其地址( D )。
A)必须是连续的 B)部分地址必须是连续的C) -定是不连续的 D)连续与否均可以13.设循环队列Q[l...n-l]的首尾指针为f和r,当插入元素时尾指针r加1,首指针F总是指在队列中第一个元素的前一个位置,则队列中元素计数为( D )。
A) r-f B) n- (r-f) C)(r-f+n)%n D) (f-r+n)%n14.完成堆排序的全过程需要( A )个记录大小的辅助空间。
A)1 B)n C) nlog2n D)|_nlog2n_|15.若给定的关键字集合为{20,15,14,18,21,36,40,10},一趟快速排序结束时,键值的排列为( A )。
A) 10, 15, 14, 18, 20, 36, 40, 21B) 10, 15, 14, 18, 20, 40, 36, 21C) 10, 15, 14, 20, 18, 40, 36, 21D) 15, 10, 14, 18, 20, 36, 40, 21二、填空题(22分)1.一棵完全二叉树的第5层有5个结点,则共有_____20_____个结点。
2.有向图G用邻接矩阵A{1…n,1...n}存储,其第i列的所有元素等于顶点i的____入度即ID(i)______。
3.设有一空栈,栈顶指针为IOOOH(十六进制),现有输入序列为1,2,3,4,5,经过Push, Push,Pop,Push,Pop,Push,Push操作后,输出序列为___2,3,5,4 1.4.在具有n(n≥1)个结点的k叉树中,有__n(k-l)+l 个空指针。
5.模式中“ababbabbab”的前缀函数为_ Next[j]=(0 1 1 2 3 1 2 3 1 2)__。
6.设图G的顶点数为n,边数为e,第i个顶点的度数为D(vi),则e=__即边数与各项点的度数之间的关系)。
7.按___中序___遍历二叉树,可以得到按值递增的关键值序列,在下图所示的二叉树中,检索关键值85的过程中,需与85进行比较的关键码序列为__50 90 57 75 85a__。
8.下列算法实现二叉树排序树上的查找,请在空格处填上适当的语句,完成上述功能。
bitreptr *bstsearch (bitreptr *t, keytype k){if (t==NULL)return NULL;elsewhile(t!=NULL) {if(t->key==k___Return(t)___;if(t->key>k)___Return(bstsearch(t->lchild, k))___;else___Return(bstsearch(t->rchild, k))___;}}三、应用题(16分)1.设二叉树的顺序存储结构如下所示。
(4分)(1)根据其存储结构,画出二叉树。
(2)写出按前序、中序、后序遍历该二叉树所得的结点序列。
(3)画出二叉树的后序线索化树。
答案1.(1)该存储结构对应的二叉树为(2)先序序列为EADCBFHGI。
中序序列为ABCDEFGHI。
后序序列为BCDAGIHFE。
(3)后序线索树为。
2.-棵完全二叉树共有21个结点,现顺序存放在一个矢量中,矢量的下标正好为结点的序号,试问序号为12的双亲结点存在吗?是什么?(4分)答2.序号为12的双亲结点存在。
因为这棵完全二叉树除根结点外的其余20个结点都有1个唯一的双亲结点。
序号为i的双亲结点是|_i/2_|,所以12的双亲结点为|_12/2_|=6。
3.线性表有顺序表和链表两种存储结构,简述各自的优缺点。
(4分)答3.在顺序表结构中,逻辑相邻的元素其存储位置也相邻。
只要确定了线性表的起始存储4.何谓队列的“假溢”现象?如何解决?(4分)答 4.随着数据元素的不断插入和删除,队列的队首指针已指向允许插入的最大位置,此时或许还有很多可插入的空间,但却不能插入数据元素了,这种现象称为队列的“假溢”。
解决的方法是采用循环链表(队列)。
四、算法设计(32分)1.已知线性表的元素按递增顺序排列,并以带首结点的单链表作为存储结构。
试编写一个删除表中所有值大于min且小于max的元素的算法。
1.删除表中所有值大于min且小于max的元素的算法如下:Typedef struct node{int data;struct node +next} linklist;delete( linklist *head, int max, int min)/*删除有序单链表中所有值大于min且小于max的元素*/{ linklist *p, *q;if (head! =NULL){q=head;p=head->next;while(p!=NULL&&p->data<=min) {q=p;p=p->next;}while(p!=NULL&&p->data<max)p=p->next;q->next=p;2.试设计一个算法,求出指定结点在给定的二叉树中的层次。
2.求出指定结点在给定的二叉树中的层次的算法:Void level (bitree *t, bitree *p,int h,int th)/*t为指向二叉树的指针,p指向待找的结点,h为p结点的层次数,th为当前的层次数*/{ if (t==NULl) h=0; /*树为空时返回0*/elseif(p==t) h=th; /*找到结点p时*/else {level (p, t->lchild,h,th+l); /*在左子树中查找*/if(h==-1)level (p, t->rchild,h,th+l);/*在右子树中查找*/ }}3.已知一个单链表中每个结点存放一个整数,并且其结点数不少于2。
试编写算法以判断该链表中从第二项起的每个元素值是否等于其序号的平方减去其前驱结点的值,若满足,返回True,否则返回False。
3.判断链表中从第二项起的每个元素值是否等于其序号的平方减去其前驱结点的值的算法如下:int Judge (linklist *head){ int flag,ilinklist *P, *q;q=head->next;flag=False;i=2;while(p!-NUIL)(if (p->data==i*i-q->data)flag=True;elsereturn False;q=p;p=p->next;i++; )return flag;}4.在含有n个元素的堆中增加一个元素,且调整为堆。
4.在含有n个元素的堆中增加一个元素,且调整为堆的算法:void heapinsert (RectyPe R[], datatype x)/*在堆R[1]到R[n]中插入一个新元素x*/{ int i,j;j=n+1; /*初始化*/while (j>l){i=i/2 /*求结点kj的双亲结点ki*/if(R[i].key<x.key) j=l; /*若为堆,跳出循环*/else fR[j]=R[i];j =i;} /*不为堆,再调整*/}R[j]=x; /*x插入正确的位置*/}模拟试题一答案模拟试题一参考答案一、选择题1.C2.D3.B4.A5.B6.C7.B8.B9.C 10.D11.C 12.D 13.D 14.A 15.A二、填空题1. 20。
2.入度即ID(i)。
3.2,3,5,4, 1.4.n(k-l)+l。
5. Next[j]=(0 1 1 2 3 1 2 3 1 2)。
6.7.中序,55 90 57 75 85a8. Return(t), Return(bstsearch(t->lchild, k)), Return(bstsearch(t->rchild, k))。
三、应用题1.(1)该存储结构对应的二叉树为(2)先序序列为EADCBFHGI。
中序序列为ABCDEFGHI。
后序序列为BCDAGIHFE。
(3)后序线索树为。
2.序号为12的双亲结点存在。
因为这棵完全二叉树除根结点外的其余20个结点都有1个唯一的双亲结点。
序号为i的双亲结点是|_i/2_|,所以12的双亲结点为|_12/2_|=6。
3.在顺序表结构中,逻辑相邻的元素其存储位置也相邻。
只要确定了线性表的起始存储位置,就可以随机存取任意数据元素。
所以顺序表的优点是方便查找,缺点是做插入和删除操作时需移动大量元素。
链表结构不要求逻辑相邻元素的存储位置相邻,即可存放内存中任何位置,元素间逻辑关系依指针相连。
查找时必须从表头指针开始依序查找。
但插入和删除操作时无需移动元素,只修改元素的指针即可。
所以链表的优点是方便插入和删除操作,缺点是不能随机查找任一元素。
4.随着数据元素的不断插入和删除,队列的队首指针已指向允许插入的最大位置,此时或许还有很多可插入的空间,但却不能插入数据元素了,这种现象称为队列的“假溢”。