数据结构考试文档
- 格式:doc
- 大小:86.50 KB
- 文档页数:6
数据结构期末考试试题及答案一、选择题1. 以下哪种数据结构是线性存储结构?A. 树B. 图C. 栈D. 队列答案:C2. 在链表中,如果一个节点既没有前驱也没有后继,那么这个节点被称作什么?A. 首节点B. 尾节点C. 中间节点D. 孤立节点答案:B3. 树的度是指什么?A. 树中节点的个数B. 树中最大的层次数C. 树的分支数D. 树的节点的度的最大值答案:C4. 在二叉搜索树中,若要查找给定值的节点,当查找失败时应返回的值是?A. -1B. 0C. 1D. 该值本身答案:A5. 快速排序算法的时间复杂度最坏情况下是多少?A. O(n)B. O(nlogn)C. O(n^2)D. O(n!)答案:C二、填空题1. 在顺序表中,元素的物理位置相邻的特点是________,这使得顺序表在________操作上具有较高的效率。
答案:连续性;访问2. 链表相比顺序表的优势在于它能够动态地________存储空间,并且________操作不需要移动大量元素。
答案:分配和释放;插入与删除3. 栈是一种________的数据结构,只允许在________进行插入和删除操作。
答案:后进先出;栈顶4. 图的遍历算法主要有两种,分别是________和________。
答案:深度优先搜索;广度优先搜索5. 哈夫曼树是一种特殊的二叉树,它常用于数据压缩,其构建过程是基于________原则。
答案:最小权值三、简答题1. 请简述数组和链表的优缺点。
答案:数组通过索引直接访问元素,访问速度快,但大小固定,插入和删除操作需要移动大量元素。
链表元素通过指针连接,可以动态分配大小,插入和删除效率高,但访问速度较慢,因为需要从头开始遍历。
2. 什么是二叉树的前序遍历、中序遍历和后序遍历?答案:二叉树的前序遍历是先访问根节点,然后遍历左子树,最后遍历右子树。
中序遍历是先遍历左子树,然后访问根节点,最后遍历右子树。
后序遍历是先遍历左子树,然后遍历右子树,最后访问根节点。
一、单选题1、逻辑上通常可以将数据结构分为( )A.初等结构和组合结构B.顺序结构和链式结构C.线性结构和非线性结构D.动态结构和静态结构正确答案:C2、如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是()。
A.栈B. 队列C.图D.树正确答案:D3、在长度为n的顺序表的第i个位置上插入一个元素(1<=i<=n+1),元素的移动次数为:()A.n-iB.i-1C.n-i+1D.i正确答案:C4、在非空线性链表中由p所指结点的后面插入一个由q所指的结点,应依次执行()A.q->next=p;p->next=q;B.p->next=q;q->next=p;C.q->next=p->next;p->next=q;D.q->next=p->next;p=q;正确答案:C5、已知栈的最大容量为4。
若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为()A.2,3,5,6,1,4B.1,4,6,5,2,3C.5,4,3,2,1,6D.3,2,5,4,1,6正确答案:D6、设栈S和队列Q初始均为空,若6个元素入栈的顺序为1、2、3、4、5、6,一个元素出栈以后立即入队列Q,若6个元素出队的顺序为2、4、3、6、5、1,则栈S的容量至少为()A.3B.5C.4D.2正确答案:A7、在计算机内实现递归算法时所需的辅助数据结构是()A.队列B.栈C.图D.树正确答案:B8、循环队列存储在数组A[0..m-1],则出队时的操作为()A.front=(front mod m)+1B.ront=(front+1)mod mC.front=front+1D.front=(front+1)mod (m-1)正确答案:B9、若以S和X分别表示进栈和退栈操作,则对初始状态为空的栈可以进行的栈操作系列合法的是()A.SXXSXSSXB.SSSXXSXXC.SXSSXXXXD.SXSXXSSX正确答案:B10、在具有m个单元的循环队列中,队头指针为front,队尾指针为rear,则队满的条件是()A.(front+1)%m==rearB.(rear+1)%m==frontC.front==rearD.rear+1==front正确答案:B11、在表长为n的顺序表上做插入运算,平均要移动的结点数为()A.n/4B.nC.n/3D.n/2正确答案:D12、元素的进栈次序为A,B,C,D,E,则退栈中不可能的序列是()A.E,D,C,B,AB.A,B,C,D,EC.E,A,B,C,DD.B,C,D,E,A正确答案:C13、下述二叉树中,()满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序。
数据结构期末考试试题一、选择题(每题2分,共20分)1. 在数据结构中,以下哪个不是线性数据结构?A. 数组B. 链表C. 树D. 图2. 一个栈的初始状态为空,元素a、b、c依次入栈,然后依次出栈,以下哪个序列不是可能的出栈序列?A. a, b, cB. b, a, cC. c, b, aD. b, c, a3. 哈希表的冲突可以通过哪种方式解决?A. 排序B. 链地址法C. 折半查找D. 二分查找4. 在二叉树中,以下哪个操作的时间复杂度是O(n)?A. 查找B. 插入C. 先序遍历D. 删除5. 以下哪个排序算法是稳定的?A. 快速排序B. 归并排序C. 堆排序D. 选择排序二、简答题(每题10分,共20分)1. 请简述什么是平衡二叉树,并说明其在数据结构中的重要性。
2. 解释什么是哈夫曼编码,并说明它在数据压缩中的应用。
三、算法题(每题15分,共30分)1. 编写一个函数,实现对链表的反转。
链表中的每个节点包含一个数据域和一个指向下一个节点的指针。
2. 给定一个未排序的整数数组,请编写一个函数,使用快速排序算法对其进行排序。
四、应用题(每题15分,共15分)1. 假设你正在设计一个在线购物平台的推荐系统,你需要使用数据结构来存储用户的行为数据。
请描述你将如何使用数据结构来优化推荐算法的性能。
五、编程题(每题15分,共15分)1. 编写一个程序,实现一个简单的文本编辑器,该编辑器支持插入、删除、查找和替换文本的功能。
请使用适当的数据结构来实现这些功能,并解释你的选择。
《数据结构》期末考试试卷试题及答案第一部分:选择题(每题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. 编写一个函数,实现链表的插入操作。
要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。
每张答题纸都要写上姓名和学号。
一、单项选择题(每小题2分,共20小题,共计40分)1.某算法的空间复杂度为0(1),则。
A.该算法执行不需要任何辅助空间B.该算法执行所需辅助空间大小与问题规模n无关C.该算法执行不需要任何空间D.该算法执行所需全部空间大小与问题规模n无关2.在长度为n的顺序表中插入一个元素,对应算法的时间复杂度为。
A.0(1)B.O(log2n)C.0(n)D.0(n2)3.设线性表中有n个元素,以下运算中,在单链表上实现要比在顺序表上实现效率更高。
A.删除指定位置元素的后一个元素B.在最后一个元素的后面插入一个新元素C.顺序输出前k个元素D.交换第i个元素和第n-i+1个元素的值(i=1, 2,…,n)4.以下数据结构中元素之间为非线性关系的是。
A.栈B.队列C.线性表D.以上都不是5.若一个栈用数组data[1..n]存储,初始栈顶指针top为n+1,则以下元素x进栈的正确操作是。
A.top++;data[top]=x;B.data[top]=x;top++;C.top-- ;data[top]=x;D.data[top]=x;top --;6.若某循环队列有队首指针front和队尾指针rear,在队不满时进队操作仅会改变。
A.frontB.rearC.front 和rearD.以上都不队7.设循环队列中数组的下标是0〜N-1,其队头、队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则其元素个数为。
A.r-fB.r-f-1C.(r-f)%N+1D.(r-f+N)%N8.设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1,则T中的叶子结点个数是。
A.5B.6C.7D.89. 一棵哈夫曼树中共有199个结点,它用于多少个字符的编码。
A.99B.100C.101D.19910.设森林F中有4棵树,第1、2、3、4棵树的结点个数分别为a、b、c、d,将森林F转换为一颗二叉树B,则二叉树B根结点的左子树上的结点个数是。
数据结构期末考试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用什么数据结构来实现?A. 链表B. 数组C. 栈D. 队列答案:B2. 以下哪个是二叉树的性质?A. 每个节点最多有两个孩子B. 每个节点最多有三个孩子C. 每个节点最多有四个孩子D. 每个节点最多有五个孩子答案:A3. 在图的遍历算法中,深度优先搜索(DFS)和广度优先搜索(BFS)的区别是什么?A. DFS使用队列,BFS使用栈B. DFS使用栈,BFS使用队列C. DFS和BFS都使用栈D. DFS和BFS都使用队列答案:B...20. 以下哪个排序算法的时间复杂度为O(n^2)?A. 冒泡排序B. 选择排序C. 插入排序D. 所有上述排序算法答案:D二、简答题(每题10分,共30分)1. 简述链表和数组的区别。
答案:链表和数组都是用来存储数据的线性数据结构。
数组是连续的内存空间,可以随机访问,但插入和删除操作效率较低;链表由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针,不支持随机访问,但插入和删除操作较为高效。
2. 什么是递归?请给出一个递归算法的例子。
答案:递归是一种算法设计技术,它允许函数调用自身来解决问题。
递归通常包含基本情况和递归情况。
例如,计算阶乘的递归算法:f(n) = n * f(n-1),其中基本情况是f(1) = 1。
...三、算法设计题(每题25分,共50分)1. 给定一个整数数组,请设计一个算法找出数组中的第k大元素。
答案:可以采用快速选择算法,类似于快速排序的划分过程,通过随机选择一个元素作为基准,将数组分为两部分,一部分包含比基准大的元素,另一部分包含比基准小的元素。
然后根据k与基准元素的位置关系,决定是继续在左侧子数组还是右侧子数组中进行查找。
2. 描述如何使用哈希表解决字符串匹配问题。
答案:哈希表可以用于实现字符串匹配的KMP算法。
首先,构建模式字符串的前缀函数,该函数用于记录模式字符串中每个位置的最长相同前缀和后缀的长度。
“数据结构”期末考试试题一、单选题(每小题2分,共12分)1.在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。
A. HL=ps p一>next=HLB. p一>next=HL;HL=p3C. p一>next=Hl;p=HL;D. p一>next=HL一>next;HL一>next=p;2.n个顶点的强连通图中至少含有( )。
A.n—l条有向边B.n条有向边C.n(n—1)/2条有向边D.n(n一1)条有向边3.从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为( )。
A.O(1)B.O(n)C.O(1Ogzn)D.O(n2)4.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( )。
A.24 B.48C. 72 D. 535.当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为( )参数,以节省参数值的传输时间和存储参数的空间。
A.整形B.引用型C.指针型D.常值引用型·6.向一个长度为n的顺序表中插人一个新元素的平均时间复杂度为( )。
A.O(n) B.O(1)C.O(n2) D.O(10g2n)二、填空题(每空1分,共28分)1.数据的存储结构被分为——、——、——和——四种。
2.在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为——域和——域。
3.——中缀表达式 3十x*(2.4/5—6)所对应的后缀表达式为————。
4.在一棵高度为h的3叉树中,最多含有——结点。
5.假定一棵二叉树的结点数为18,则它的最小深度为——,最大深度为——· 6.在一棵二叉搜索树中,每个分支结点的左子树上所有结点的值一定——该结点的值,右子树上所有结点的值一定——该结点的值。
7.当向一个小根堆插入一个具有最小值的元素时,该元素需要逐层——调整,直到被调整到——位置为止。
数据结构期末考试试题及答案一、选择题1. 在数据结构中,以下哪种数据结构是“先进先出”(FIFO)的?A. 栈B. 队列C. 链表D. 堆答案:B2. 哪种数据结构具有类似现实生活中“洋葱”的结构?A. 链表B. 树C. 图D. 堆答案:B3. 在常见的排序算法中,以下哪个算法具有最好的时间复杂度?A. 快速排序B. 插入排序C. 冒泡排序D. 选择排序答案:A4. 以下哪个数据结构可以解决“最短路径”问题?A. 队列B. 链表C. 树D. 图答案:D5. 在二叉搜索树中,节点的左子树的值都小于节点的值,右子树的值都大于节点的值。
这种特点被称为:A. 平衡性B. 完全性C. 左倾性D. 有序性答案:D二、填空题1. 在栈的操作中,插入元素的操作被称为______。
答案:push2. 哈希表通过______的方式快速查找元素。
答案:散列3. 在链表中,指向链表头部的指针被称为______。
答案:头指针4. 在图的遍历算法中,使用队列的遍历方式被称为______。
答案:广度优先搜索5. 大O表示法中,表示最坏情况下时间复杂度的记号是______。
答案:O三、简答题1. 请简要说明栈和队列的特点及应用场景。
答:栈是一种先进后出(FILO)的数据结构,只能在栈顶进行插入和删除操作。
栈的应用场景包括函数调用、表达式求值、撤销操作等。
队列是一种先进先出(FIFO)的数据结构,只能在队尾插入元素,在队头删除元素。
队列的应用场景包括多线程任务调度、消息队列等。
2. 简要描述堆排序的思想和步骤。
答:堆排序是一种基于二叉堆的排序算法。
首先,将待排序序列构建成一个大顶堆;然后,将堆顶元素与最后一个元素交换,即将最大元素放到已排序部分的末尾;接着,重新调整堆,将剩余元素重新构建成大顶堆;重复以上步骤,直到所有元素排序完成。
四、编程题请使用C语言实现一个二叉树的前序遍历算法。
```c#include <stdio.h>#include <stdlib.h>struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;};void preorderTraversal(struct TreeNode* root) {if (root != NULL) {printf("%d ", root->val); // 先访问根节点preorderTraversal(root->left); // 再遍历左子树preorderTraversal(root->right); // 最后遍历右子树}}int main() {// 构建二叉树struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));struct TreeNode* node1 = (struct TreeNode*)malloc(sizeof(struct TreeNode));struct TreeNode* node2 = (struct TreeNode*)malloc(sizeof(struct TreeNode));root->val = 1;node1->val = 2;node2->val = 3;root->left = node1;root->right = node2;node1->left = NULL;node1->right = NULL;node2->left = NULL;node2->right = NULL;// 调用前序遍历函数preorderTraversal(root);return 0;}```本文介绍了数据结构期末考试的试题及答案,涵盖了选择题、填空题、简答题和编程题等不同题型。
《数据结构》期末考试试题及答案一、选择题(每题2分,共20分)1. 下列哪种数据结构是线性结构?A. 栈B. 树C. 队列D. 图答案:A2. 在计算机科学中,什么是最基本的数据结构?A. 数组B. 链表C. 栈D. 树答案:C3. 下列哪种操作的时间复杂度是O(1)?A. 在链表中插入元素B. 在数组中查找元素C. 在树中删除节点D. 在图中寻找最短路径答案:B4. 下列哪种数据结构常常用于实现栈和队列?A. 数组B. 链表C. 树D. 图答案:A5. 下列哪种数据结构是有序的?A. 栈B. 队列C. 链表D. 图答案:C二、填空题(每题2分,共20分)1. 在数据结构中,栈是一种后进先出(____)的数据结构。
答案:线性表2. 队列是一种先进先出(____)的数据结构。
答案:线性表3. 链表是一种____数据结构,由一系列节点组成。
答案:非线性4. 二叉树是一种特殊的树,它的每个节点最多有两个____。
答案:子节点5. 哈希表是通过____函数将关键字映射到表中的位置来访问数据。
答案:哈希三、判断题(每题2分,共20分)1. 树是一种线性结构。
()答案:错误2. 链表的插入和删除操作时间复杂度都是O(1)。
()答案:错误3. 图是一种线性结构。
()答案:错误4. 哈希表是一种基于顺序结构的的数据结构。
()答案:错误5. 在数据结构中,时间复杂度O(n)表示算法随着输入规模的增加而线性增长。
()答案:正确四、简答题(每题10分,共30分)1. 请简述栈和队列的特点和应用场景。
答案:栈是一种后进先出(LIFO)的数据结构,应用场景包括函数调用栈、表达式求值等。
队列是一种先进先出(FIFO)的数据结构,应用场景包括任务队列、缓冲区等。
2. 请简述链表的优缺点。
答案:链表的优点包括动态扩容、插入和删除操作时间复杂度为O(1)、可以方便地实现各种复杂数据结构。
缺点包括占用内存空间较大、不如数组支持随机访问。
数据结构期末考试试题及答案一、选择题1. 以下哪种数据结构是线性存储结构?A. 树B. 图C. 链表D. 哈希表答案:C2. 在二叉搜索树中,若删除一个节点,则需要进行以下哪些操作?A. 仅删除操作B. 删除操作和调整树结构操作C. 插入操作D. 忽略操作答案:B3. 快速排序算法的时间复杂度在最坏情况下是:A. O(log n)B. O(n)C. O(n log n)D. O(n^2)答案:D4. 下面哪个排序算法适用于大数据量的排序?A. 冒泡排序B. 快速排序C. 插入排序D. 归并排序答案:D5. 哈夫曼树是一种特殊的:A. 二叉树B. 多叉树C. 哈希表D. 图答案:A二、填空题1. 链表的基本操作包括__________、__________、__________和__________。
答案:创建、插入、删除、查找2. 栈是一种后进先出(LIFO)的数据结构,其添加元素的操作称为__________,移除元素的操作称为__________。
答案:push、pop3. 在图的遍历算法中,按照遍历方向的不同,可以分为__________和__________。
答案:深度优先遍历、广度优先遍历4. 红黑树是一种自平衡的__________。
答案:二叉搜索树4. 散列表(哈希表)的主要优点是__________。
答案:查找速度快三、简答题1. 请简述数组和链表的区别及各自的优缺点。
答案:数组是一种顺序存储结构,通过索引直接访问元素,访问速度快,但是插入和删除操作需要移动大量元素,效率较低。
链表是一种非顺序存储结构,通过指针连接元素,插入和删除操作只需要改变指针,效率较高,但是访问元素需要从头开始遍历,速度较慢。
2. 请解释二分查找法的工作原理及其适用条件。
答案:二分查找法是一种在有序数组中查找特定元素的算法。
工作原理是将数组分为两部分,判断目标值与中间元素的大小关系,然后在相应的一半中继续查找,重复此过程,直到找到目标值或范围缩小到无法再分。
一.单选题
1.数据结构是()
A.一种数据类型
B.数据的存储结构
C.一组性质相同的数据元素的集合
D.相互之间存在一种或多种特定关系的数据元素的集合
2.算法分析的目的是()
A.辨别数据结构的合理性
B. 评价算法的优劣
C.研究算法中输入与输出的关系
D.鉴别算法的可读性
3.在线性表的下列运算中,不改变数据元素之间结构关系的运算是()A.插入B.删除
C.排序D.定位
4.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为()
A.3,2,6,1,4,5 B.3,4,2,1,6,5
C.1,2,5,3,4,6 D.5,6,4,2,3,1
5.设串sl=”Data Structures with C++”,s2=”it”,则子串定位函数index(s1,s2)的值为
()
A.15 B.16
C.17 D.18
6.广义表A=(a,(b),(),(c,d,e))的长度为( )
A.4 B.5
C.6 D.7
7.一棵含18个结点的二叉树的高度至少为( )
A.3 B.4
C.5 D.6
8..已知二叉树的先序序列为ABDECF,中序序列为DBEAFC,则后序序列为( ) A.DEBAFC B.DEFBCA
C.DEBCFA D.DEBFCA
9.无向图中一个顶点的度是指图中( )
A.通过该顶点的简单路径数B.与该顶点相邻接的顶点数
C.通过该顶点的回路数D.与该顶点连通的顶点数
10.已知一个图如下所示,从顶点a出发进行广度优先遍历可能得到的序列为( )
A.a c e f b d B.a c b d f e
C.a c b d e f D.a c d b f e
11.在下列排序方法中,平均时间性能为O(nlogn)
且空间性能最好的是( )
A.快速排序B.堆排序
C.归并排序D.基数排序
12.已知一组关键字为
{25,48,36,72,79,82,23,40,16,35},其中每相邻两个为有序子序列。
对这些子序列进行一趟两两归并的结果是( )
A.{25,36,48,72,23,40,79,82,16,35}
B.{25,36,48,72,16,23,40,79,82,35}
C.{25,36,48,72,16,23,35,40,79,82}
D.{16,23,25,35,36,40,48,72,79,82}
13.设顺序存储的线性表共有123个元素,按分块查找的要求等分成3块。
若对索引表采用顺序查找来确定块,并在确定的块中进行顺序查找,则在查找概率相等的情况下,分块查找成功时的平均查找长度为( )
A.21 B.23 C.41 D.62
二、填空题
16.称算法的时间复杂度为O(f(n)),其含义是指算法的执行时间和_______的数量级相同。
17.在一个长度为n的单链表L中,删除链表中*p的前驱结点的时间复杂度为_________。
18.假设为循环队列分配的向量空间为Q[20],若队列的长度和队头指针值分别为13和17,则当前尾指针的值为______。
19.一个有向图G中若有弧<V i,V j>、< V j,V k >和< V i,V k>,则在图G的拓朴序列中,顶点V i、V j和V k的相对位置为__________。
20.假设三维数组A[10][9][8]按行优先顺序存储,若每个元素占3个存储单元,且首地址为100,则元素A[9][8][7]的存储地址是_______。
21.已知在一棵含有n个结点的树中,只有度为k的分支结点和度为0的叶子结点,则该树中含有的叶子结点的数目为_________或_________。
22.能够成功完全拓扑排序的图一定是一个___________。
23.如果在排序前,关键字序列已接近正序或逆序,则在堆排序和快速排序两者之中,选用___________较为适当。
24.假设哈希表的表长为m,哈希函数为H(key),若用线性探查法解决冲突,则探查地址序列的形式表达为_____________。
三、解答题
25.什么是二叉排序树?什么是二叉平衡树?简述其特征。
26.已知二叉树的先序序列和中序序列分别为HDACBGFE和ADCBHFEG。
(1)画出该二叉树;
(2)画出与(1)求得的二叉树对应的森林。
(1)(2)
27.已知带权图的邻接表如下所示,其中边表结点的结构为:
依此邻接表从顶点C出发进行深度优先遍历。
(1)画出由此得到的深度优先生成树;
(2)写出遍历过程中得到的从顶点C到其它各顶点的带权路径及其长度。
28.从空树起,依次插入关键字37,50,42,18,48,12,56,30,23,构造一棵二叉排序树。
(1)画出该二叉排序树;
(2)画出从(1)所得树中删除关键字为37的结点之后的二叉排序树。
(1)(2)
四、算法阅读题
29.如图所示,利用同一循环向量空间实现两个队列,其类型Queue2定义如下:
DataType data[MaxSize];
int front[2],length[2];
} ;
Queue2对于i=0或1,front[i]和length[i]分别为第i个队列的头指针和长度域。
请在空缺处填入合适的内容,实现第i个循环队列的入队操作。
int EnQueue(Queue2 *Q, int i, DataType x)
{//若第i个队列不满,则元素x入队列,并返回1,否则返回0
if(i<0||i>1)return 0;
if( (1) )
return 0;
Q->data[ (2) ]=x;
Q->length[ (3) ]++;
return 1;
}
解:
(1)
(2)
(3)
30.阅读下列函数algo,并回答问题。
(1)假设整型数组A[1..8]中的元素依次为(3,8,9,1,7,4,2,6)。
执行函数调用algo(A,8)时,外层while的循环体执行多少次?函数的返回值是多少?
(2)简述函数algo(L,n)的功能。
int algo(int L[],int n)
{
int i=0,j,s=1,t=n;
while(i!=(n+1)/2)
{
int x=L[s];
i=s;j=t;
while(i<j)
{
while(i<j && L[j]>=x)j--;
L[i]=L[j];
while(i<j && L[i]<=x)i++;
L[j]=L[i];
}
L[i]=x;
if(i<(n+1)/2)s=i+1;
else
t=i-1;
}
if(i= =0)return 0;
else
return L[i];
}
解:
(1)
(2)
五、算法设计题
31.假设以带头结点的单链表表示有序表,单链表的类型定义如下:typedef struct node{
DataType data;
struct node *next
}LinkNode, *LinkList;
编写算法,从有序表A中删除所有和有序表B中元素相同的结点。