数据结构试题(附有答案)

合集下载

数据结构试题集(包含答案-完整版)

数据结构试题集(包含答案-完整版)

数据结构试题集(包含答案-完整版)数据结构试题集(包含答案-完整版)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来记录当前栈中的最小值。

数据结构试题及答案

数据结构试题及答案

数据结构试题及答案⼀、选择题(共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.关于排序,下列说法中正确的是()。

数据结构试题集(含答案)

数据结构试题集(含答案)

程序复杂性3、具有线性结构的数据结构是(D)。

A.图B.树C.广义表D.栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B)等5个特性。

A.可执行性、可移植性和可扩充性B.可执行性、有穷性和确定性C.确定性、有穷性和稳定性D.易读性、稳定性和确定性5、下面程序段的时间复杂度是(C)。

for(i=0;i<m;i++)6A.C.789、B)和运A.10}11A.12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是(A)。

A.正确性算法应能正确地实现预定的功能B.易读性算法应易于阅读和理解,以便调试、修改和扩充C.健壮性当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果D.高效性即达到所需要的时间性能13、下列程序段的时间复杂度为(B)。

x=n;y=0;while(x>=(y+1)*(y+1))y=y+1;A.O(n)B.)O C. O(1) D.O(n2)(n二、填空题1、程序段“i=1;while(i<=n)i=i*2;”的时间复杂度为O(log2n)。

2、数据结构的四种基本类型中,树形结构的元素是一对多关系。

1答案:1、(C)。

2存储方A.3A.456A.C.7、在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是(C)。

A.p->next=q;q->prior=p;p->next->prior=q;q->next=q;B.p->next=q;p->next->prior=q;q->prior=p;q->next=p->next;C.q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;D.q->next=p->next;q->prior=p;p->next=q;p->next=q;8、线性表采用链式存储时,结点的存储地址(C)。

数据结构试题集(8套卷子+答案)

数据结构试题集(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,试画出该二叉树形状,并写出它的后序遍历序列。

数据结构试卷试题及答案

数据结构试卷试题及答案

数据结构试卷试题及答案一、选择题(每题5分,共40分)1. 数据结构是研究数据元素的()A. 存储结构B. 处理方法C. 逻辑结构D. 所有以上内容答案:D2. 在数据结构中,通常采用()方式来表示数据元素之间的逻辑关系。

A. 顺序存储结构B. 链式存储结构C. 索引存储结构D. 散列存储结构答案:B3. 下面哪一个不是栈的基本操作?()A. 入栈B. 出栈C. 判断栈空D. 获取栈顶元素答案:D4. 下面哪一个不是队列的基本操作?()A. 入队B. 出队C. 判断队列空D. 获取队头元素答案:D5. 下面哪一个不是线性表的特点?()A. 有且只有一个根节点B. 每个节点最多有一个前驱和一个后继C. 数据元素类型相同D. 数据元素类型可以不同答案:D6. 在下列哪种情况中,使用链式存储结构比顺序存储结构更合适?()A. 数据元素经常插入和删除B. 数据元素大小不固定C. 数据元素个数不确定D. 所有以上情况答案:D7. 下面哪一个不是树的遍历方式?()A. 前序遍历B. 中序遍历C. 后序遍历D. 翻转遍历答案:D8. 在下列哪种情况中,使用散列存储结构比其他存储结构更合适?()A. 数据元素个数较少B. 数据元素查找频繁C. 数据元素插入和删除频繁D. 数据元素大小不固定答案:B二、填空题(每题5分,共30分)9. 栈是一种特殊的线性表,它的插入和删除操作都限定在表的一端进行,这一端称为______。

答案:栈顶10. 队列是一种特殊的线性表,它的插入操作在表的一端进行,这一端称为______,而删除操作在另一端进行,这一端称为______。

答案:队尾、队头11. 二叉树中的节点包括______和______。

答案:根节点、子节点12. 在图的存储结构中,邻接矩阵表示法用______个一维数组来表示图中各个顶点之间的关系。

答案:两个13. 散列存储结构中,关键码到存储地址的映射方法称为______。

数据结构试题(含答案)

数据结构试题(含答案)

数据结构试题一、单选题1、在数据结构的讨论中把数据结构从逻辑上分为(C )A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构。

2、采用线性链表表示一个向量时,要求占用的存储空间地址(D )A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。

A nB n/2C (n-1)/2D (n+1)/2?4、在一个单链表中,若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 )的表示等价。

数据结构考试题目及答案

数据结构考试题目及答案

数据结构试题6一、单项选择题(每小题3分,共30分)1.设栈的输入序列是1、2、3、4,则______不可能是其出栈序列。

( )[A] 1234 [B] 2134 [C] 1432 [D] 43122.在一个具有n个结点的线性链表中查找某个结点,若查找成功,需要平均比较_____个结点。

( )[A] n [B] n/2 [C] (n+1)/2 [D] (n-1)/23.设每个字符占一个字节,二维数组A中每个元素有6个字符组成,其行下标从0到9,列下标从0到3,元素_____当A按行优先存储起始地址与当A按列优先存储的起始地址相同。

( )[A] A[3][0] [B] A[3][1] [C] A[3][2] [D] A[2][3]4.具有2000个结点的非空二叉树的最小深度为_______。

( )[A] 9 [B] 10 [C] 11 [D] 125.已知某二叉树的后根序列是dabec,中根序列是debac,则先根序列是_____。

( )[A] acbed [B] decab [C] deabc [D] cedba6. 无向图中所有边的数目等于所有顶点的度数之和的_____倍。

( )[A] 1 [B] 2 [C] 1/2 [D] 不一定7.递归函数F(n)=F(n-1)+n+1(n>1)的递归体是_______。

( )[A] F(0)=0 [B] F(1)=1 [C] F(n)=n+1 [D] F(n)=F(n-1)+n+18. 若需要在O(nlog2n)的时间内完成对n个元素的排序,且要求排序是稳定的,则可选择的排序方法是_______。

( )[A] 快速排序[B] 堆排序[C] 归并排序[D] 直接插入排序9.在对n个元素的序列进行排序时,堆排序所需要的附加存储空间是__。

( )[A] O(1) [B] O(log2n) [C] O(n) [D] O(n log2n)10.假定有K个关键字互为同义词,若用线性探查法把这K个关键字存入散列表中,则总的探查次数至少为______。

数据结构试题及答案

数据结构试题及答案

数据结构试题及答案一、选择题(每小题2分,共20分),每个题的备选答案中,只有一个是正确的,请将答案填写在试题的括号中。

1、对顺序存储的线性表,设其长度为20,在任何位置上插入或删除操作都是等概率的。

插入一个元素时平均要移动表中的()个元素。

A.10 B.9 C.11 D.122、若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表3、当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。

A.top++ B.top-- C.top = 0 D.top4、设入栈顺序为A,B,C,D,E,则出栈序列不可能是()。

A.EDCBA B.ABCDE C.ADEBC D.ABDEC5、已知关键字序列(46, 79, 56, 38, 40, 84),采用快速排序(以位于最左位置的关键字为基准)得到的第一次划分结果为:()A.{ 40, 38, 46, 56, 79, 84 } B.{ 38, 46, 79, 56, 40, 84 }C.{ 38, 46, 56, 79, 40, 84 } D.{ 40, 38, 46, 79, 56, 84 }6、一个有n个顶点和n条边的无向图一定是()。

A.不连通的B.连通的C.有环的D.无环的7、在一棵具有n个结点的二叉树的第i层上,最多具有()个结点。

A.2i B.2i-1 C.2i+1 D.2n8、对线性表采用折半查找法,该线性表必须()。

A.采用顺序存储结构B.采用顺序存储结构,且元素按值有序C.采用链式存储结构D.采用链式存储结构,且元素按值有序9、在一棵具有n个结点的完全二叉树中,分支结点的最大编号为()。

A.?(n-1)/2? B.?n/2? C.?n/2? D.?n/2? -110、在一个无向图中,所有顶点的度数之和等于所有边数的( ) 倍。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构(本科)试卷7一、选择题(每小题1分,共10分)1.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。

A. O(n)B. O(n/2)C. O(1)D. O(n2)2.带头结点的单链表first为空的判定条件是:A. first == NULL;B. first->link == NULL;C. first->link == first;D. first != NULL;3.当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为()。

A. n-2B. n-1C. nD. n+14.在系统实现递归调用时需利用递归工作记录保存实际参数的值。

在传值参数情形,需为对应形式参数分配空间,以存放实际参数的副本;在引用参数情形,需保存实际参数的(),在被调用程序中可直接操纵实际参数。

A. 空间B. 副本C. 返回地址D. 地址5.在一棵树中,()没有前驱结点。

A. 分支结点B. 叶结点C. 树根结点D. 空结点6.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加()。

A. 2B. 1C. 0D. –17.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为()的值除以9。

A. 20B. 18C. 25D. 228.在有向图中每个顶点的度等于该顶点的()。

A. 入度B. 出度C. 入度与出度之和D. 入度与出度之差9.在基于排序码比较的排序算法中,()算法的最坏情况下的时间复杂度不高于O(nlog2n)。

A. 起泡排序B. 希尔排序C. 归并排序D. 快速排序10.当α的值较小时,散列存储通常比其他存储方式具有()的查找速度。

A. 较慢B.较快C. 相同二、填空题(每小题1分,共10分)1.二维数组是一种非线性结构,其中的每一个数组元素最多有____2___个直接前驱(或直接后继)。

2.将一个n阶三对角矩阵A的三条对角线上的元素按行压缩存放于一个一维数组B中,A[0][0]存放于B[0]中。

对于任意给定数组元素B[K],它应是A中第_公式n*(n+1)/2 +j=k_行的元素。

(n为行数,j为列数)3.链表对于数据元素的插入和删除不需移动结点,只需改变相关结点的__指针___域的值。

4.在一个链式栈中,若栈顶指针等于NULL则为____空栈____。

5.主程序第一次调用递归函数被称为外部调用,递归函数自己调用自己被称为内部调用,它们都需要利用栈保存调用后的_____返回____地址。

6.在一棵树中,_叶子_结点没有后继结点。

7.一棵树的广义表表示为a (b (c, d (e, f), g (h) ), i (j, k (x, y) ) ),结点f的层数为____3__。

假定根结点的层数为0。

8.在一棵A VL树(高度平衡的二叉搜索树)中,每个结点的左子树高度与右子树高度之差的绝对值不超过_____1___。

9.n (n﹥0) 个顶点的无向图最多有__n*(n+1)/2__条边,最少有__n-1__条边。

10.在索引存储中,若一个索引项对应数据对象表中的一个表项(记录),则称此索引为_稠密___索引,若对应数据对象表中的若干个表项,则称此索引为_稀疏_索引。

三、判断题(每小题1分,共10分)1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。

对2.链式存储在插入和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。

错3.在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。

对4.通常递归的算法简单、易懂、容易编写,而且执行的效率也高。

错5.一个广义表的表尾总是一个广义表。

对6.当从一个小根堆(最小堆)中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为止。

对7.对于一棵具有n个结点,其高度为h的二叉树,进行任一种次序遍历的时间复杂度为O(h)。

错n8.存储图的邻接矩阵中,邻接矩阵的大小不但与图的顶点个数有关,而且与图的边数也有关。

错9.直接选择排序是一种稳定的排序方法。

错10.闭散列法通常比开散列法时间效率更高。

四、运算题(每小题8分,共40分)1.设有一个10⨯10的对称矩阵A,将其下三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么A[8][5]存放于B中什么位置。

公式:n*(n+1)/2 +j=k(n为行数,j为列数)2.这是一个统计单链表中结点的值等于给定值x的结点数的算法,其中while循环有错,请重新编写出正确的while循环。

int count ( ListNode * Ha, ElemType x ){// Ha为不带头结点的单链表的头指针int n = 0;while ( Ha->link != NULL ) {Ha = Ha->link;if ( Ha->data == x ) n++;}return n;}3.已知一棵二叉树的前序和中序序列,求该二叉树的后序序列。

前序序列:A, B, C, D, E, F, G, H, I, J中序序列:C, B, A, E, F, D, I, H, J, G后序序列:4.已知一个有序表( 15, 26, 34, 39, 45, 56, 58, 63, 74, 76, 83, 94 ) 顺序存储于一维数组a[12]中,根据折半搜索过程填写成功搜索下表中所给元素34, 56, 58, 63, 94时的比较次数。

34 56 58 63 94元素值比较次数5.设散列表为HT[17], 待插入关键码序列为{ Jan, Feb, Mar, Apr, May, June, July, Aug, Sep,Oct, Nov, Dec },散列函数为H (key) = ⎣i / 2⎦,其中,i是关键码第一个字母在字母表中的序号。

现采用线性探查法解决冲突。

(1)试画出相应的散列表;(2)计算等概率下搜索成功的平均搜索长度;五、算法分析题(每小题8分,共24分)1.阅读下列算法,并补充所缺语句void purge_linkst ( ListNode *& la ) {//从头指针为la 的带表头结点的有序链表中删除所有值相同的多余元素,//并释放被删结点空间。

ListNode p, q, t; ElemType temp;p = la->link;while (p != NULL ) {q = p;temp=p->data ;p = p->link;if ( p != NULL && ________ ) p = p->link;else {while ( p != NULL &&___ ) {t = p;p = p->link;delete t;}q->link=p;}}}2.下面给出一个排序算法,它属于数据表类的成员函数,其中currentSize是数据表实例的当前长度,V ector[ ] 是存放数据表元素的一维数组。

template <class T>void dataList<T> :: unknown ( ) {T temp; int i, j, n = currentSize;for ( i = 1; i < n; i++ )if ( V ector[i] .key < V ector[i-1].key ) {temp = V ector[i];V ector[i] = V ector[i-1];for ( j = i-2; j >= 0; j-- )if ( temp.key < V ector[j].key ) V ector[j+1] = V ector[j];else break;V ector[j+1] = temp;}}(1)写出该算法的功能。

(2)针对有n个数据对象的待排序的数据表,在最好情况下,算法的排序码比较次数和对象移动次数分别是多少?比较次数:移动次数:3.已知二叉树中的结点类型用BinTreeNode表示,被定义为:struct BinTreeNode { ElemType data;BinTreeNode *leftChild, *rightChild; };其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。

根据下面函数的定义指出函数的功能。

算法中参数BT指向一棵二叉树的树根结点。

BinTreeNode* BinTreeSwopX ( BinTreeNode * BT ) {if ( BT == NULL ) return NULL;else {BinTreeNode* pt = new BinTreeNode;pt->data = BT->data;pt->rightChild = BinTreeSwopX ( BT->leftChild );pt->lefthild = BinTreeSwopX ( BT->rightChild );return pt;}}六、算法设计题(6分)已知二叉树中的结点类型用BinTreeNode表示,被定义为:struct BTreeNode { char data;BinTreeNode *leftChild, *rightChild; };其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域,根据下面函数声明编写出求一棵二叉树中结点总数的算法,该总数值由函数返回。

假定参数BT初始指向这棵二叉树的根结点。

int BTreeCount ( BinTreeNode* BT );数据结构(本科)试题参考答案一、选择题(每小题1分,共10分)1. A2. B3. B4. D5. C6. A7. C8. C9. C10. B二、填空题(每小题1分,共10分)1. 22. ⎣(K+1)/3⎦3. 指针4. 空栈5. 返回6. 叶子7. 38. 19. n(n -1)/2, 010. 稠密,稀疏第9和10小题中有一空错则1分全扣。

三、判断题(每小题1分,共10分)1. 对2. 错3. 对4. 错5. 对6. 对7. 错8. 错9. 错10. 错四、运算题(每小题8分,共40分)1. 根据题意,矩阵A 中当元素下标I 与J 满足I ≥J 时,任意元素A[I][J]在一维数组B 中的存放位置为I * (I + 1) / 2 + J ,因此,A[8][5]在数组B 中位置为8 * (8 + 1) / 2 + 5 = 41。

相关文档
最新文档