浙大城院数据结构期末模拟2
浙江理工大学数据结构与算法期末样卷 (2)

模拟试卷二参考答案一、单选题(每题2分,共20分)1.B 2.B 3.A 4.C 5.D 6.A 7.C 8.C 9.D 10.D二、填空题(每空1分,共26分) 1.集合结构 线性结构 树结构 图结构 2. O(n) 3.O(1) O(1) 4.7 2 25. 94 3 X Y * + 2 Y * 3 / -6. 16 317.孩子(或子)结点 双亲(或父)结点 8. 45 n(n-1)9.(12,36) (17,5,49) (74,82) (63) 10.减少1(或减少) 11. O(log 2n) O(nlog 2n) 12. n/m三、 运算题(每题6分,共24分) 1.线性表为:(90,40,78,50,34,60)2. 当前序序列为ABKCDFGHIJ ,中序序列为KBCDAFHIGJ 时,逐步形成二叉树的过程如下图4所示:图4 3.用克鲁斯卡尔算法得到的最小生成树为:(1,6)1, (2,4)1, (2,5)2, (5,7)2, (2,6)3, (3,5)7 4.见图5。
图5四、 阅读算法(每题7分,共14分) 1. (1) La=(26,34,57,79,100)(2)La=(57,79,100,34) (3)La=(79,34,57,26,100) 2.前序遍历链式存储的二叉树。
五、算法填空(每空2分,共8 分)(low<=high) K==A[mid].key Binsch(A,mid+1,hight,K) return -1六、编写算法(8分)bool Find(LNode* HL, ElemType &item) {LNode* p=HL; while pif (p->data==item){ return true; }else p=p->next; return false; }。
数据结构期末考试试卷及答案

数据结构期末考试试卷及答案一、选择题(每题2分,共20分)1. 下面哪一项不是数据结构的基本类型?()A. 线性结构B. 树形结构C. 集合结构D. 图形结构答案:C2. 在链表中,存储元素的数据域称为(),存储下一个元素地址的域称为()。
A. 节点,指针B. 指针,节点C. 数据域,指针域D. 指针域,数据域答案:C3. 下面哪种排序算法的平均时间复杂度最高?()A. 冒泡排序B. 快速排序C. 堆排序答案:A4. 在二叉树中,具有n个节点的完全二叉树的深度至少是()A. log2nB. log2(n+1)C. log2n+1D. log2(n-1)答案:C5. 下面哪种树的节点中不包含任何关键字?()A. 二叉搜索树B. 哈希树C. 平衡二叉树D. B树答案:B6. 下面哪个算法不是用来解决排序问题的?()A. 快速排序B. 冒泡排序C. 二分查找答案:C7. 下面哪种数据结构的存储方式不是顺序存储?()A. 线性表B. 栈C. 队列D. 树答案:D8. 下面哪种算法的时间复杂度是O(nlogn)?()A. 冒泡排序B. 快速排序C. 插入排序D. 选择排序答案:B9. 下面哪个算法不是用来解决查找问题的?()A. 二分查找B. 顺序查找C. 快速排序D. 哈希查找答案:C10. 下面哪个算法不是用来解决图论问题的?()A. 深度优先搜索B. 广度优先搜索C. 最短路径算法D. 快速排序答案:D二、填空题(每题2分,共20分)11. 在线性表中,插入和删除操作的时间复杂度是______。
答案:O(n)12. 在链表中,插入和删除操作的时间复杂度是______。
答案:O(1)13. 快速排序的平均时间复杂度是______。
答案:O(nlogn)14. 堆排序的平均时间复杂度是______。
答案:O(nlogn)15. 二分查找的时间复杂度是______。
答案:O(logn)16. 在二叉树中,度为0的节点数等于度为2的节点数加______。
《算法与数据结构(2) 》期末考试卷

班号 学号 姓名 成绩《算法与数据结构(2) 》期末考试卷注意事项:1、关闭手机、将考试用文具以外的物品放于讲台上 2、严格遵守学校的考场纪律,违纪者请出考场 题目:一、 判断题(20分)请在正确的陈述前面括号中打√,在错误的陈述前面括号中打×。
1. ( × )如果一个问题不是NP 问题,那么它有可能是P 问题。
2. ( × )回溯法用深度优先或广度优先法搜索状态空间树。
3. ( × ))(n n O 221=+且)(n n O 222=4. ( × )贪心算法通过增加空间复杂性来减少时间复杂性。
5. ( × )快速排序算法的平均时间复杂度是O(nlogn),使用随机化快速排序算法可以将平均时间复杂度降得更低。
6. ( √ )基于比较的寻找数组A[1...n ]中最大值元素问题的下界是)3/(n Ω。
7. ( √ )直观地讲,P 类问题是易解的问题;而NP 问题是易被验证的问题。
8. ( × )下列问题是一个判定问题:给定一个合取范式,对其中的所有逻辑变量求一组真值赋值,使得给定的合取范式在该组真值赋值下为真。
9. ( √ )max(f(n),g(n))= Θ(f(n)+g(n))10.( √ )若 ))(()(n g O n f =,则 ))(()(n f n g Ω=二、 简答题(30分):1.简述拉斯维加斯(Las Vegas )算法和蒙特卡洛(Monte Carlo )算法的主要区别前者不一定总能给出解,但给出的解一定是正确的; 后者总能给出解,但是给出的解可能是错误的。
2.按照增长率上升的顺序排列以下函数,即,若在你的排序结果中,函数f(n) 跟在 g(n)的后面,则说明应该满足g(n)是O (f(n)):4/31)(n n f = n n f 2)(2= n n f log )(3= !)(4n n f = 22)(5n n f = nn n f log )(6= )(3n f , )(1n f , )(6n f , )(2n f , )(4n f , )(5n f3.推导以下递推式的解:T(n)=2 当n = 1时T(n)=2T(n/3)+2n 当n ≥2时T(n)=2T(n/3)+2n=2[2T(n/32)+2(n/3)]+2n=4T(n/32)+4(n/3)+2n=4[2T(n/33)+2(n/32)]+ 4(n/3)+2n=8T(n/33)+8(n/32)+ 4(n/3)+2n=…设n=3k=2k T(n/3k )+ 2k (n/3k-1)+ 2k-1 (n/3k-2)+…+ 4(n/3)+2n =2k 2+2n[(2/3)k-1 +(2/3)k-2 +…+2/3+1]=2k 2+6n[1-(2/3)k]=2k 2+6n-6.2k=6n-4.2k=6n-4.2=n n3log246⋅-4.请给出基于比较的对数组A[1…n]进行排序问题的最紧的下界,并写出两个平均时间复杂度为该下界的排序算法的名称。
2022年浙大城市学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年浙大城市学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、哈希文件使用哈希函数将记录的关键字值计算转化为记录的存放地址,因为哈希函数是一对一的关系,则选择好的()方法是哈希文件的关键。
A.哈希函数B.除余法中的质数C.冲突处理D.哈希函数和冲突处理2、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储, a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。
A.13B.33C.18D.403、计算机算法指的是解决问题的步骤序列,它必须具备()三个特性。
A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性D.易读性、稳定性、安全性4、在用邻接表表示图时,拓扑排序算法时间复杂度为()。
A.O(n)B.O(n+e)C.O(n*n)D.O(n*n*n)5、有六个元素6,5,4,3,2,1顺序入栈,下列不是合法的出栈序列的是()。
A.543612B.453126C.346521D.2341566、若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b, c,d,e,a,则根结点的孩子结点()。
A.只有e B.有e、b C.有e、c D.无法确定7、下列关于无向连通图特性的叙述中,正确的是()。
Ⅰ.所有的顶点的度之和为偶数Ⅱ.边数大于顶点个数减1 Ⅲ.至少有一个顶点的度为1A.只有Ⅰ B.只有Ⅱ C.Ⅰ和Ⅱ D.Ⅰ和Ⅲ8、已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历结果为()。
A.CBEFDAB.FEDCBAC.CBEDFAD.不定9、每个结点的度或者为0或者为2的二叉树称为正则二叉树。
n个结点的正则二叉树中有()个叶子。
A.log2nB.(n-1)/2C.log2n+1D.(n+1)/210、在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是()。
2022年浙大城市学院数据科学与大数据技术专业《计算机组成原理》科目期末试卷B(有答案)

2022年浙大城市学院数据科学与大数据技术专业《计算机组成原理》科目期末试卷B(有答案)一、选择题1、某一计算机采用主存Cache存储层次结构,主存容量有8个块,Cache容量有4个块,采取直接映射方式。
若主存块地址流为0,1,2,5,4,6,4,7,1,2,4,1,3,7,2,一开始Cache为空,此期间Cache的命中率为()。
A.13.3%B.20%C.26.7%D.33.3%2、有效容量为128KB的Cache,每块16B,8路组相联。
字节地址为1234567H的单元调入该Cache,其tag应为()。
A.1234HB.2468HC.048DHD.12345H3、假定有4个整数用8位补码分别表示:rl=FEH,r2=F2H,r3=90H,r4=F8H,若将运算结果存放在一个8位寄存器中,则下列运算会发生溢出的是()。
A.rlxr4B.r2xr3C.rlxr4D.r2xr44、串行运算器结构简单,其运算规律是()。
A.由低位到高位先行进行进位运算B.由低位到高位先行进行借位运算C.由低位到高位逐位运算D.由高位到低位逐位运算5、某机字长8位,含一位数符,采用原码表示,则定点小数所能表示的非零最小正数为()A.2-9B.2-8C.2-7D.2-66、为了对n个设备使用总线的请求进行仲裁,如果使用独立请求方式,则需要()根控制线。
A.nB.log2n+2C.2nD.37、下列关于同步总线的说法中,正确的有()。
I.同步总线一般按最慢的部件来设置公共时钟II.同步总线一般不能很长III.同步总线一般采用应答方式进行通信IV.通常,CPU内部总线、处理器总线等采用同步总线A. I,IIB. I,II,IVC.III,IVD.II,III,IV8、已知计算机A的时钟频率为800MHz,假定某程序在计算机A上运行需要12s。
现在硬件设计人员想设计计算机B,希望该程序在B上的运行时间能缩短为8s,使用新技术后可使B的时钟频率大幅度提高,但在B上运行该程序所需要的时钟周期数为在A上的1.5倍。
数据结构期末考试试题(含答案)

数据结构期末考试试题(含答案)题目一请写出快速排序算法的递归实现。
解答一public class QuickSort {public void sort(int[] arr, int low, int high) {if (low < high) {int partitionIndex = partition(arr, low, high);sort(arr, low, partitionIndex - 1);sort(arr, partitionIndex + 1, high);}}private int partition(int[] arr, int low, int high) {int pivot = arr[high];int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] <= pivot) {i++;swap(arr, i, j);}}swap(arr, i + 1, high);return i + 1;}private void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}题目二请解释什么是二叉搜索树,并给出一个例子。
解答二二叉搜索树是一种有序的二叉树,其中每个节点的值大于其左子树的所有节点的值,小于其右子树的所有节点的值。
下面是一个二叉搜索树的例子:6/ \3 9/ \ \1 4 12题目三请写出深度优先搜索(DFS)算法的递归实现。
解答三import java.util.*;public class DFS {private int numVertices;private List<List<Integer>> adjList;public DFS(int numVertices) {this.numVertices = numVertices;adjList = new ArrayList<>();for (int i = 0; i < numVertices; i++) {adjList.add(new ArrayList<>());}}public void addEdge(int src, int dest) { adjList.get(src).add(dest);}public void DFSUtil(int start, boolean[] visited) { visited[start] = true;System.out.print(start + " ");List<Integer> neighbors = adjList.get(start);for (int neighbor : neighbors) {if (!visited[neighbor]) {DFSUtil(neighbor, visited);}}}public void DFS(int start) {boolean[] visited = new boolean[numVertices];DFSUtil(start, visited);}}以上是数据结构期末考试试题及其答案。
浙大城院数据结构2

浙江大学城市学院实验报告课程名称数据结构基础实验项目名称实验七栈的顺序表示和实现学生姓名专业班级学号实验成绩指导老师(签名)日期一.实验目的和要求1、掌握栈的存储结构及其基本操作。
学会定义栈的顺序存储结构及其各种基本操作的实现。
2、掌握栈的后进先出原则。
3、通过具体的应用实例,进一步熟悉和掌握栈在实际问题中的运用。
二.实验内容1、设栈采用顺序存储结构(用动态数组),请编写栈的各种基本操作的实现函数,并存放在头文件SeqStack.h中。
同时建立一个验证操作实现的主函数文件test3_1.cpp,编译并调试程序,直到正确运行。
2、选做:编写函数,判断给定的字符串是否中心对称。
如字符串“abcba”、“abccba”均为中心对称,字符串“abcdba”不中心对称。
要求利用SeqStack.h中已实现的有关栈的基本操作函数来实现。
请把该函数添加到文件test3_1.cpp中的主函数前,并在主函数中添加相应语句进行测试。
3、填写实验报告,实验报告文件取名为report7.doc。
4、上传实验报告文件report7.doc、源程序文件test3_1.cpp及SeqStack.h 到Ftp服务器上自己的文件夹下。
三. 函数的功能说明及算法思路(包括每个函数的功能说明,及一些重要函数的算法实现思路)函数功能bool InitStack (Stack &S);//初始化线形表ElemType Pop(Stack &S);//删除栈顶元素,并返回ElemType Peek(Stack S);//读取栈顶元素的值并且返回void Push(Stack &S, ElemType item);//将item值的元素进栈int EmptyStack (Stack S);//判空void ClearStack (Stack &S);//清除bool IsReverse(char *h,Stack &S);//判断字符串h是否和栈s相匹配算法实现思路将输入的字符依次输入到栈s中,字符串h中,后利用栈先进后出原理,将s末尾的字符依次和h开始对应位置的字符匹配比较四. 实验结果与分析(包括运行结果截图、结果分析等)结果分析:刚开始没元素进栈,故栈为空后元素进栈调用ElemType Pop(Stack &S);删除并返回栈顶元素ElemType Peek(Stack S);//读取栈顶元素的值并且返回最后判空依次输出s内的值调用bool IsReverse(char *h,Stack &S);判断回文五. 心得体会(记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。
数据结构期末考试试题及答案

数据结构期末考试试题及答案数据结构期末考试试题及答案随着信息时代的到来,数据的处理和管理变得愈发重要。
数据结构作为计算机科学的基础课程之一,对于培养学生的编程思维和解决问题的能力具有重要意义。
数据结构期末考试是对学生掌握该课程知识的一次全面检验。
本文将为大家提供一些常见的数据结构期末考试试题及答案,希望能够对大家复习备考有所帮助。
1. 请解释什么是数据结构,并举例说明。
数据结构是指在计算机中组织和存储数据的方式。
它关注的是数据的逻辑关系和操作,而不仅仅是数据本身。
常见的数据结构有数组、链表、栈、队列、树等。
举例来说,数组是一种线性结构,它将相同类型的数据元素按照一定的顺序存储在一块连续的内存空间中,可以通过索引来访问和修改元素。
2. 请说明数组和链表的区别,并分别列举它们的优缺点。
数组和链表都是常见的线性数据结构,但它们在存储方式和操作上有所不同。
数组将元素存储在连续的内存空间中,通过索引可以直接访问和修改元素。
链表则通过节点和指针的方式将元素串联起来,每个节点包含数据和指向下一个节点的指针。
数组的优点是访问速度快,可以通过索引直接定位元素,适合随机访问。
缺点是插入和删除操作比较耗时,需要移动其他元素。
链表的优点是插入和删除操作简单高效,只需要修改指针即可,不需要移动其他元素。
缺点是访问速度较慢,需要遍历链表才能找到指定位置的元素。
3. 请解释什么是栈和队列,并分别列举它们的应用场景。
栈和队列都是常见的线性数据结构,它们在数据的插入和删除操作上有所不同。
栈是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。
队列是一种先进先出(FIFO)的数据结构,允许在队尾进行插入操作,在队头进行删除操作。
栈的应用场景有很多,比如函数调用栈、表达式求值、括号匹配等。
函数调用栈用于保存函数的局部变量和返回地址,保证函数的正确执行顺序。
表达式求值中,栈可以用于保存运算符和中间结果,实现正确的计算顺序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模拟2
1.数据在计算机内存中的表示是指。
A. 数据的存储结构
B. 数据结构
C. 数据的逻辑结构
D. 数据元素之间的关系
2. 对线性表,在下列情况下应当采用链表表示的是。
A. 经常需要随机地存取元素
B. 经常需要进行插入和删除操作
C. 表中元素需要占据一片连续的存储空间
D. 表中的元素个数不变
3.与单链表相比,双链表的优点之一是。
A.插入、删除操作更加简单。
B.可随机访问。
C.可以省略表头指针或表尾指针
D.访问前驱结点更加方便
4.如果最常用的操作是取第i个结点及前驱,则采用存储方式最节省时间。
A.顺序表 B.双链表
C.单循环链表 D.单链表
5.可以用带表头附加结点的链表表示线性表,也可以用不带表头附加结点的链表表示线性表,前者最主要的好处是。
A.可以加快对表的遍历 B. 使空表和非空表的处理统一
C.节省存储空间 D. 可以提高存取表元素的速度
6. 一个队列的入队序列是1,2,3,4, 则队列的输出序列是。
A. 4,3,2,1
B. 1,2,3,4
C. 1,4,3,2
D. 3,2,4,1
7.栈和队列的共同点是。
A.都是先进先出 B.都是先进后出
C.属于非线性结构 D.只允许在端点处插入和删除元素
8.以下不是栈的基本运算的是。
A.删除栈顶元素 B. 删除栈底元素
C.判断栈是否为空 D. 将栈置为空栈
9.一个递归的定义可以用递归过程求解,也可以用非递归过程求解,若从运行时间来看,通常__________。
A.非递归算法比递归算法快B.非递归算法比递归算法慢
C.非递归算法与递归算法时间一样D.非递归算法与递归算法时间不一定
10. 在一个非空二叉数的中序遍历序列中,根结点的右边。
A. 只有右子树上的所有结点
B.只有右子树上的部分结点
C. 只有左子树上的部分结点
D.只有左子树上的所有结点
11. 有关树和二叉树的叙述错误的有。
A. 树中的最大度数没有限制,而二叉树结点的最大度数为2;
B. 树的结点无左右之分,而二叉树的结点有左右之分;
C. 树的每个结点的孩子数为0到多个, 而二叉树每个结点均有两个孩子;
D. 树和二叉树均为树形结构。
12.深度为k的完全二叉树至少有个结点,至多有个结点。
A. (2k-1, 2k-1)
B. (2k-1, 2k)
C. (2k-1, 2k)
D. (2k-1-1, 2k-1)
13. 具有4个顶点的无向完全图,有条边。
A. 3
B. 6
C. 12
D. 16
14.一个具有n个顶点的无向图,要确保是一个连通图,至少需要条边。
A. n-1
B. n
C. n+1
D. n/2
15.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的倍。
A. 4
B. 2
C. 1
D. 1/2
二.填空题 (本大题共 10 个空,每个空 2 分,共 20 分)
1. 数据的逻辑结构被分为集合、 、 、图形结构四种。
2. 数据的存储结构主要分为 和 两种。
3. 不同形式的时间复杂度O(logn)、O(nlogn)、O(n)、O(n 2)、O(2n
),随着n 的增长,其增长速度关系为(按从小到大排列) 。
4.在单链表中,要删除某一指定的结点,必须找到该结点的 。
5. 在一个长度为n 的顺序表中删除表中的第i 个元素(0≤i ≤n-1)时,需向前移动 元素。
6. 已知某无向图的二元组表示为 DS=(K, R), K={a, b, c, d, e},R={r},
r={(a,b),(a,c),(a,d),(b,e),(d,e),(c,d),<c,b>},则顶点b 的度为 。
7. 已知一棵树用广义表表示为a(b, c(d(e(f), g, h), i), j),则此树的度为 ,深度为 。
三.解答题 ( 本大题共 3 题,每题 6 分,共 18 分)
1.设有字符串 3*a-b/4 ,试利用栈写出将此次序改变为3a*b4/- 的操作步骤。
例如: ABC 变BCA ,操作步骤为 Push; Push; Pop; Push; Pop; Pop 。
2.已知一棵二叉树的中序遍历序列是abcdjefhgi ,前序遍历序列是 eadcbjfghi ,请画出这棵二叉树,并写出这棵二叉树的后序遍历序列。
3. 设有向图G=(V,E),V={V1,V2,V3,V4,V5,V6},G 的邻接矩阵如下:
0 1 1 0 0 0
0 0 0 0 1 1
0 0 0 1 0 0
1 0 0 0 0 0
0 0 0 0 0 0
0 0 0 1 1 0
①请画出图G的强连通分量;
②请根据邻接矩阵存储结构有向图的广度优先遍历算法,写出从顶点V1出发所得到的顶点序列。
1.设head为非递减有序的单链表的头指针,单链表中各结点的值依次为 ( 2, 3, 3, 3, 4, 7,
8, 8, 9, 10,10) ,阅读下列算法,写出运行该算法后单链表中各结点的值。
void fun1(LNode* &head )
{
LNode *p=head, *q;
while ( p != NULL && p-> next != NULL ) {
if ( p->data == p->next->data) {
q = p->next;
p->next = q->next;
free(q);
}
else p = p->next;
}
}
2.阅读下列程序,说明该算法的功能。
ElemType fun2(Queue q)
{
ElemType x;
Queue temp;
InitQueue(temp);
while (!QueueEmpty(q)) {
x=OutQueue(q);
EnQueue(temp, x);
}
while (!QueueEmpty(temp)) {
x=OutQueue(temp);
EnQueue(q, x);
}
return x;
}
阅读下列程序,在空白处填入适当的语句,使算法完整。
1.设有一个顺序表L,其元素为整型数据,下列算法将L中所有小于0的整数放在前半部分,大于0的整数放在后半部分。
提示:从L的两端查找,前端找大于0的数据,后端找小于0的数据,然后将两位置的数据交换。
顺序表结构定义如下:
struct List{
ElemType *list; 下列算法用于输出邻接表表示的无向图中序号为num的顶点的所有邻接点。
邻接表结构定义如下: typedef struct node{
int adjvex;
struct node *next;
} edgenode;
typedef edgenode *adjlist[MaxVertexNum];
算法如下:
void OutAdjVex(adjlist GL, int num)
{
edgenode *p;
p = ④ ;
while ( ⑤ ) {
cout<< ⑥ ;
p =p->next;
}
}
1.根据下列函数声明编写求二叉树BT中所有结点数和叶子结点数的递归算法,其值分别由引
用参数C1和C2带回,C1和C2的初值均为0。
函数声明为:void Count(BTreeNode *BT , int &C1, int &C2)
结点结构定义如下:
struct BTreeNode {
ElemType data;
BTreeNode *left;
BTreeNode *right;
};
2.设用顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底
分别设在数组的两个端点,请写出双向栈的顺序存储类型定义,以及入栈Push(Stack, i, item) 和出栈 Pop(Stack, i) 算法,其中i为1或2,分别表示在数组两端的两个栈。