清华试题数据结构试题

合集下载

《数据结构》期终考试试卷(A)-清华大学

《数据结构》期终考试试卷(A)-清华大学

2010年《数据结构》期终考试试卷(A)班级学号姓名一、简答题(每小题6分,共30分)(1) 假设一个线性链表的类名为linkedList,链表结点的类名为ListNode,它包含两个数据成员data和link。

data存储该结点的数据,link是链接指针。

下面给定一段递归打印一个链表中所有结点中数据的算法:void PrintList (ListNode *L) {if ( L != NULL ) {cout << L->data << endl;PrintList ( L->link );}}试问此程序在什么情况下不实用?给出具体修改后的可实用的程序?(1) 此程序在内存容量不足时不适用。

因为需要一个递归工作栈。

当链表越长,递归工作栈的深度越深,需要的存储越多。

可采用非递归算法节省存储。

void PrintList (ListNode *L) {while ( L != NULL ) {cout << L->data << endl;L = L->link;}}(2) 如果每个结点占用2个磁盘块因而需要2次磁盘访问才能实现读写,那么在一棵有n个关键码的2m阶B树中,每次搜索需要的最大磁盘访问次数是多少?(2) 在2m阶B树中关键码个数n与B树高度h之间的关系为h≤log m ((n+1)/2)+1,那么每次搜索最大磁盘访问次数为2h max = 2log m ((n+1)/2)+2。

(3) 给定一棵保存有n 个关键码的m 阶B 树。

从某一非叶结点中删除一个关键码需要的最大磁盘访问次数是多少?(3) 在m 阶B 树中关键码个数n 与B 树最大高度h 的关系为h = log ⎡m/2⎤((n+1)/2)+1。

若设寻找被删关键码所在非叶结点读盘次数为h ’,被删关键码是结点中的k i ,则从该结点的p i 出发沿最左链到叶结点的读盘次数为h -h ’。

数据结构(C语言版)第三版__清华大学出版社_习题参考答案

数据结构(C语言版)第三版__清华大学出版社_习题参考答案

附录习题参考答案习题1参考答案1.1.选择题(1). A. (2). A. (3). A. (4). B.,C. (5). A. (6). A. (7). C. (8). A. (9). B. (10.)A.1.2.填空题(1). 数据关系(2). 逻辑结构物理结构(3). 线性数据结构树型结构图结构(4). 顺序存储链式存储索引存储散列表(Hash)存储(5). 变量的取值范围操作的类别(6). 数据元素间的逻辑关系数据元素存储方式或者数据元素的物理关系(7). 关系网状结构树结构(8). 空间复杂度和时间复杂度(9). 空间时间(10). Ο(n)1.3 名词解释如下:数据:数据是信息的载体,是计算机程序加工和处理的对象,包括数值数据和非数值数据。

数据项:数据项指不可分割的、具有独立意义的最小数据单位,数据项有时也称为字段或域。

数据元素:数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,一个数据元素可由若干个数据项组成。

数据逻辑结构:数据的逻辑结构就是指数据元素间的关系。

数据存储结构:数据的物理结构表示数据元素的存储方式或者数据元素的物理关系。

数据类型:是指变量的取值范围和所能够进行的操作的总和。

算法:是对特定问题求解步骤的一种描述,是指令的有限序列。

1.4 语句的时间复杂度为:(1) Ο(n2)(2) Ο(n2)(3) Ο(n2)(4) Ο(n-1)(5) Ο(n3)1.5 参考程序:main(){int X,Y,Z;scanf(“%d, %d, %d”,&X,&Y,Z);if (X>=Y)if(X>=Z)if (Y>=Z){ printf(“%d, %d, %d”,X,Y,Z);}else{ printf(“%d, %d, %d”,X,Z,Y);}else{ printf(“%d, %d, %d”,Z,X,Y);}elseif(Z>=X)if (Y>=Z){ printf(“%d, %d, %d”,Y,Z,X);}else{ printf(“%d, %d, %d”,Z,Y,X);}else{ printf(“%d, %d, %d”,Y,X,Z);}}1.6 参考程序:main(){int i,n;float x,a[],p;printf(“\nn=”);scanf(“%f”,&n);printf(“\nx=”);scanf(“%f”,&x);for(i=0;i<=n;i++)scanf(“%f ”,&a[i]);p=a[0];for(i=1;i<=n;i++){ p=p+a[i]*x;x=x*x;}printf(“%f”,p)’}习题2参考答案2.1选择题(1). C. (2). B. (3). B. (4). B. 5. D. 6. B. 7. B. 8. A. 9. A. 10. D.2.2.填空题(1). 有限序列(2). 顺序存储和链式存储(3). O(n) O(n)(4). n-i+1 n-i(5). 链式(6). 数据指针(7). 前驱后继(8). Ο(1) Ο(n)(9). s->next=p->next; p->next=s ;(10). s->next2.3. 解题思路:将顺序表A中的元素输入数组a,若数组a中元素个数为n,将下标为0,1,2,…,(n-1)/2的元素依次与下标为n,n-1,…, (n-1)/2的元素交换,输出数组a的元素。

数据结构(C 语言 清华出版社)习题答案

数据结构(C 语言 清华出版社)习题答案

习题1参考答案一、单项选择题1. A2. C3. D4. B5. C、A6. C、B7. B8. D9. B 10. B二、填空题1.线性结构,非线性结构2.集合,线性,树,图3.一对一,一对多或多对多4. 时间,空间5. 前趋,一,后继,多6. 有多个7. 一对一,一对多,多对多8. O(2n)9. O(n)10. O(2n)11. O(log3n)12. 程序对于精心设计的典型合法数据输入能得出符合要求的结果。

13. 事后统计,事前估计三、算法设计题1. O(2n)2. O(2n)3. O(n3)4. O(n)5. O(n)习题2参考答案一、单项选择题1.A 2.A 3.D 4.C 5.D 6.A 7.B 8.B 9.C 10.A 11.D 12.B 13.C 14.B 15.C 16.C 17.B 18.D 19.C 20.A二、填空题1.线性2.n-i+1 3.相邻4.前移,前,后5.物理存储位置,链域的指针值6.前趋,后继7.顺序,链接8.一定,不一定9.线性,任何,栈顶,队尾,队头10.单链表,双链表,非循环链表,循环链表11.使空表和非空表统一;算法处理一致12.O(1),O(n)13.栈满,栈空,m,栈底,两个栈的栈顶在栈空间的某一位置相遇14.2、3;15.O(1)三、简答题1.头指针是指向链表中第一个结点(即表头结点)的指针;在表头结点之前附设的结点称为头结点;表头结点为链表中存储线性表中第一个数据元素的结点。

若链表中附设头结点,则不管线性表是否为空表,头指针均不为空,否则表示空表的链表的头指针为空。

2.线性表具有两种存储结构即顺序存储结构和链接存储结构。

线性表的顺序存储结构可以直接存取数据元素,方便灵活、效率高,但插入、删除操作时将会引起元素的大量移动,因而降低效率:而在链接存储结构中内存采用动态分配,利用率高,但需增设指示结点之间关系的指针域,存取数据元素不如顺序存储方便,但结点的插入、删除操作较简单。

清华大学912-2016

清华大学912-2016
操作系统 1 是非判断,正确打 V,错误打 X(都写完两门了,这时候才说对错应该怎么表示,我前面 都用的汉字囧)
1)8 位 cpu 不能进行线程切换 2)忘了 3)死锁必要条件:互斥访问,占有并等待,非剥夺,循环等待 4)忘了 5)忘了
2 多重选择题 1) 程序和进程的区别 A 程序啥啥啥 B 进程啥啥啥 C 进程是动态啥啥啥 D 程序是动态啥啥啥 2) 忘了就记得选项 C 有些数据 cache 并不能存放 D 多核处理器共享一个高速缓存 3) 忘了 4) 忘了


接口 1:214.1.?.? IP 转换池 20 个 ipv4 地址我记不起来了
Router B
客户机
接口 1:?.?.?.? IP 转换池 20 个 ipv6 地址我记不起来了
Net1
接口 2: 214.1.?.?记不起
接口 2: 198.???记不起
1)路由 B 发 RIP 协议给 A,问 A 会把那个消息发送给 B,在发送的那条后面打√(A 有三个
twist(x->lc->rc); putchar(x->data); twist(忘了); putchar(忘了); } Else{ Twist(忘了); Putchar(忘了); } }
计算机组成原理 1 判断题 1)
2 选择题
3 任何指令的执行部件可以抽象为一个逻辑组件和寄存器的结构,逻辑组件的延迟为 150ps, 寄存器为 10ps,示意图如下
接口,每个接口都给出了 ip 地址,但我想不起来了)
目的 ip 地址
发出端口
路径跳数
发送?
接口 1 发出的地址 1
5
接口 3 发出的地址 3
1
Router B 地址

清华大学数据结构试题及答案

清华大学数据结构试题及答案

清华大学数据结构试题及答案以下是清华大学数据结构试题及答案:试题一:1. 请解释什么是数据结构。

答案:数据结构是计算机科学中研究数据的组织、存储和管理方式的学科。

它涉及到数据的表示、操作以及与之相关的算法的设计和实现。

2. 请列举常见的数据结构类型。

答案:常见的数据结构类型包括数组、链表、栈、队列、树、图等。

3. 请解释什么是算法。

答案:算法是一系列解决特定问题的指令和计算步骤。

它描述了在给定输入的情况下,如何进行计算并产生所需输出。

4. 请列举一些常见的算法。

答案:常见的算法包括排序算法(如冒泡排序、插入排序、快速排序)、查找算法(如二分查找、哈希查找)、图算法(如深度优先搜索、广度优先搜索)等。

5. 请解释什么是时间复杂度和空间复杂度。

答案:时间复杂度是描述算法执行时间与输入规模之间的关系。

空间复杂度是描述算法所需内存空间与输入规模之间的关系。

试题二:1. 请给出数组和链表的区别。

答案:数组是一块连续的内存空间,元素在内存中按照索引顺序排列。

链表是由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。

2. 请解释什么是栈和队列。

答案:栈是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。

队列是一种先进先出(FIFO)的数据结构,允许在队尾插入数据,在队头删除数据。

3. 请给出树和图的区别。

答案:树是一种由节点和边组成的数据结构,每个节点可以有多个子节点。

图是一种由节点和边组成的数据结构,节点之间的关系可以是任意的,包括有向和无向边。

4. 请解释什么是哈希表。

答案:哈希表是一种通过哈希函数将键映射到特定位置的数据结构。

它能够快速地进行插入、删除和查找操作。

5. 请解释什么是递归。

答案:递归是一种通过调用自身的方法或函数来解决问题的编程技巧。

在递归过程中,问题会被拆分成一个或多个规模较小的子问题,直到达到基本情况。

以上就是清华大学数据结构试题及答案,希望对您有所帮助。

数据结构清华大学模拟试题一答案

数据结构清华大学模拟试题一答案

清华大学模拟题一一.单项选择题(2分/题)1.一个栈的输入序列为12345,则下列序列中是栈的输出序列的是()。

知道这题的解题思路吗?A.23415B.54132C.31245D.142532.设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为()。

A.r-fB.r-f+1C.(r-f) mod n +1D.(r-f+n) mod n3.二叉树在线索化后,仍不能有效求解的问题是()。

这题是线索化问题,可能你没看过。

可以等我去给你讲。

A.先序线索二叉树中求先序后继B. 中序线索二叉树中求中序后继C.中序线索二叉树中求中序前驱D. 后序线索二叉树中求后序后继4.求最短路径的FLOYD算法的时间复杂度为()。

(那Djstla的时间复杂度呢?)A.O(n)B.O(n+e)C.O(n2)D.O(n3)5.一棵左右子树不空的二叉树在先序线索化后,其空指针域数为()。

(知道是哪个指针域吗?就是最后一个访问的节点的右指针,因为它没有后继节点。

)A.0B.1C.2D.不确定6.数组A[1..5,1..6]的每个元素占5个单元,将其按行优先顺序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为()。

这题可要会哟@A.1140B.1145C.1120D.11257.在下列排序算法中,在待排序的数据表已经为有序时,花费时间反而最多的是()。

(要知道为什么,这个我跟你讲过)A.快速排序B.希尔排序C.冒泡排序D.堆排序8.对有18个元素的有序表做折半查找,则查找A[3]的比较序列的下标依次为()。

(这题的数组下标应该说明一下是A[1..18])A.1-2-3B.9-5-2-3C.9-5-3D. 9-4-2-39.下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是()。

这些题出的都不错!A.堆排序B.冒泡排序C.快速排序D.直接插入排序10.在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡点为A,并已知A的左孩子的平衡因子为-1,右孩子的平衡因子为0,则做()型调整以使其平衡。

数据结构考试试题及答案

数据结构考试试题及答案

数据结构考试试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用什么类型的数据结构来实现?A. 栈B. 队列C. 数组D. 链表答案:C2. 下列选项中,哪一个不是二叉树的性质?A. 任意节点的左子树和右子树的深度可能不同B. 任意节点的左子树和右子树的深度相同C. 任意节点的左子树和右子树的节点数可能不同D. 任意节点的左子树和右子树的节点数相同答案:B3. 哈希表的冲突解决方法不包括以下哪种?A. 开放定址法B. 链地址法C. 线性探测法D. 排序法答案:D4. 以下哪种排序算法的时间复杂度最低?A. 冒泡排序B. 快速排序C. 插入排序D. 归并排序答案:B5. 在图的遍历算法中,深度优先搜索(DFS)使用的栈是:A. 系统栈B. 显式栈C. 隐式栈D. 以上都不是答案:B6. 以下哪种数据结构可以有效地实现稀疏矩阵的存储?A. 顺序存储B. 链表C. 散列D. 邻接矩阵答案:C7. 在二叉搜索树中,插入一个新节点后,树的平衡因子可能为:A. -2B. 0C. 2D. 3答案:A8. 堆数据结构中,父节点的值总是大于其子节点的值,这种堆被称为:A. 最小堆B. 最大堆C. 完全二叉树D. 满二叉树答案:B9. 以下哪个算法不是动态查找表的算法?A. 直接查找B. 二分查找C. 斐波那契查找D. 哈希查找答案:A10. 在图的遍历算法中,广度优先搜索(BFS)使用的栈是:A. 系统栈B. 显式栈C. 隐式栈D. 以上都不是答案:C二、填空题(每题2分,共20分)1. 在数据结构中,栈是一种______结构,遵循后进先出(LIFO)的原则。

答案:线性2. 一个具有n个顶点的无向图的边数最多为______。

答案:n*(n-1)/23. 快速排序算法的时间复杂度在最坏情况下为______。

答案:O(n^2)4. 在哈希表中,如果一个关键字的哈希地址已经被占用,则需要进行______。

考研清华大学数据结构专业真题回忆版

考研清华大学数据结构专业真题回忆版

2013考研清华大学数据结构专业真题回忆版1.长度分别为m 和n 的升序链表,若将它们合并为一个长度为m+n 的降序链表,那么最坏情况下的时间复杂度是A. O<n>B. O<m*n>C. O<min<m,n>>D. O<max<m,n>>2. 一个栈的入栈序列为1, 2,3, ,n ,其出栈序列是 p1, p2, p3, pn.若p2 = 3,那么p3 可能取值的个数是:A. n- 3B. n- 2C. n- 1D. 无法确定3. 若将关键字1,2,3,4,5,6,7 依次插入到初始为空的平衡二叉树T 中,那么T 中平衡因子为0 的分支结点的个数是A. 0B. 1C. 2D. 34. 已知三叉树T 中6 个叶结点的权分别是2,3,4,5,6,7,T 的带权〔外部〕路径长度最小是A. 27B. 46C. 54D. 565. 若X 是后序线索二叉树中的叶结点,且X 存在左兄弟结点Y,那么X 的右线索指向的是A. X 的父结点B. 以Y 为根的子树的最左下结点C. X 的左兄弟结点YD. 以Y 为根的子树的最右下结点6. 在任意一棵非空二叉排序树T1 中,删除某结点v 之后形成二叉排序树T2,再将v 插入T2 形成二叉排序树T3.下列关于T1 与T3 的叙述中,正确的是I. 若v 是T1 的叶结点,那么T1 与T3 不同II. 若v 是T1 的叶结点,那么T1 与T3 相同III. 若v 不是T1 的叶结点,那么T1 与T3 不同IV. 若v 不是T1 的叶结点,那么T1 与T3 相同A. 仅I、IIIB. 仅I、IVC. 仅II、IIID. 仅II、IV7. 设图的邻接矩阵A 如下所示.各顶点的度依次是A. 1,2,1,2B. 2,2,1,1C. 3,4,2,3D. 4,4,2,28. 若对如下无向图进行遍历,那么下列选项中,不.是广度优先遍历序列的是A. h,c,a,b,d,e,g,fB. e,a,f,g,b,h,c,dC. d,b,c,a,h,e,f,gD. a,b,c,d,h,e,f,g9、下列的AOE网表示一项包含8个活动的工程.通过同时加快若干活动的进度可以缩短整个工程的工期.下列选项中,加快其进度就可以缩短整个工程的工期的是:A c和eB d和eC f 和dD f和h10、在一棵高为2 的5阶B树中,所含关键字的个数最少是A 5B 7C 8 D142015年考研复习方案和规划前几遍专业参考书的复习,一定要耐心仔细梳理参考书的知识点并全面进行把握1、基础复习阶段要求吃透参考书内容,做到准确定位,事无巨细地对涉及到的各类知识点进行地毯式的复习,夯实基础,训练思维,掌握一些基本概念,为下一个阶段做好准备.2、强化提高阶段本阶段,考生要对指定参考书进行更深入复习,加强知识点的前后联系,建立整体框架结构,分清重难点,对重难点基本掌握.做历年真题,弄清考试形式、题型设置和难易程度等内容.3、冲刺阶段总结所有重点知识点,包括重点概念、理论和模型等,查漏补缺,回归教材.温习专业课笔记和历年真题,做专业课模拟试题.调整心态,保持状态,积极应考.注意事项1、学习任务中所说的"一遍"不一定是指仅看一次书,某些难点多的章节可能要反复看几遍才能彻底理解通过.2、每本书每章节看完后最好自己能闭上书后列一个提纲,以此回忆内容梗概,也方便以后看着提纲进行提醒式记忆.3、看进度,卡时间.一定要防止看书太慢,遇到弄不懂的问题,要及时请教专业咨询师或本校老师.三、学习方法解读〔一〕参考书的阅读方法1、了解课本基本内容,对知识体系有初步了解,认真做课后习题,考研题型基本离不开课后题的原型,将课后题做清楚明白,专业课基本就不会成为你的问题.2、对课本知识进行总结,材料综合相对于其它只考一门专业课的专业来说,知识点比较多,前后章节联系不强,因此需要对知识点进行梳理,对课本题型进行分类.3、将自己在学习过程中产生的问题记录下来,并用红笔标记,着重去理解那些易考而对自己来说比较难懂的知识,尽可能把所有的有问题知识要点都能够及时记录并在之后反复进行理解.〔二〕学习笔记的整理方法1、在仔细看书的同时应开始做笔记,笔记在刚开始的时候可能会影响看书的速度,但是随着时间的发展,会发现笔记对于整理思路和理解课本的内容都很有好处.2、做笔记的方法不是简单地把书上的内容抄到笔记本上,而是把书上的内容整理成为一个个小问题,按照题型来进行归纳总结.笔记应着重将自己不是非常明白的地方标记出来,通过多做题对知识点进行梳理总结,对题型归类.〔三〕真题的使用方法认真分析历年试题,做好总结,对于考生明确复习方向,确定复习范围和重点,做好应试准备都具有十分重要的作用.对于理工科的学生来说,总结真题中高分值题型是非常重要的,因为一个大题可能会关乎你在初试中是安全通过还是被刷,同时也不能放弃分值较小的题型.基本原那么是计算题吃透,选择简答认真总结分类,把握各类型题在各章节的分布,有重点的去复习,分值较多章节着重记忆理解.考生可以根据这些特点,有针对性地复习和准备,并进行一些有针对性的练习,这样既可以检查自己的复习效果,发现自己的不足之处,以待改进;又可以巩固所学的知识,使之条理化、系统化.。

数据结构试题及答案(十套)

数据结构试题及答案(十套)

数据结构试题及答案(十套)数据结构试题及答案(十套)一、选择题1. 数据结构是指()。

A. 存储数据的方式B. 数据的逻辑结构和物理结构C. 数据的存储结构和存储方式D. 数据的逻辑结构、存储结构和存储方式答案:D2. 在数据结构中,线性表的存储方式包括()。

A. 顺序存储和链式存储B. 数组存储和链表存储C. 顺序存储、链表存储和索引存储D. 顺序存储、链表存储和树形存储答案:A3. 栈是一种()的数据结构。

A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:C4. 队列是一种()的数据结构。

A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:A5. 二叉树中,度为0的节点称为()。

A. 叶子节点B. 根节点C. 中间节点D. 子节点答案:A6. 以下哪个排序算法是稳定的?A. 快速排序B. 选择排序C. 插入排序D. 希尔排序答案:C7. 图中表示顶点之间关系的边的数量称为()。

A. 顶点度数B. 边数C. 路径数D. 网络答案:B8. 哈希表通过()来实现高效的查找操作。

A. 散列函数B. 排序算法C. 遍历操作D. 顺序存储答案:A9. 平衡二叉树是一种具有左右子树高度差不超过()的二叉树。

A. 0B. 1C. 2D. 3答案:B10. 在链表中,删除节点的操作时间复杂度是()。

A. O(1)B. O(logn)C. O(n)D. O(nlogn)答案:A二、填空题1. 在顺序存储结构中,元素之间的逻辑关系由()表示。

答案:下标2. 二叉查找树的中序遍历结果是一个()序列。

答案:递增3. 哈希表通过散列函数将关键字映射到()上。

答案:地址4. 图的邻接表中,每个顶点的所有邻接点链接成一个()。

答案:链表5. 位运算符中的左移和右移运算都是对二进制数进行()操作。

答案:移位三、解答题1. 简要介绍顺序存储和链式存储这两种线性表的存储方式,并比较它们的优缺点。

答案:顺序存储是将元素按照逻辑顺序依次存储在一块连续的存储空间中,通过元素的下标可以直接访问到元素。

清华计算机考研试题

清华计算机考研试题

清华计算机考研试题《数据结构》一、选择题123 给了一序列比如6.7.4.8.9.3.散列函数是H(key)=key%11.一问成功时的平均搜索长度二问不成功的平均搜索长度4 哪种数据结构,从某一个结点到根结点的路径序列组成一个降序排列a. b.最大堆 c.最小堆 d5 还有一个题是关于关键路径的,答案选项是49/B -C \A /F\ \\D-E H\G/6 什么是数据结构? A B C定义在一个数据集合上的属性和操作 D7 高度为h的完全二叉树,一共有多少种?A B 2^(h-1) C D二、证明题1. 什么样的有向无环图有唯一的拓扑有序序列,并证明。

三、计算题1 有n个结点的二叉树最大高度,最小高度分别是多少?其中g和f函数的作用是通过输入参数,进行一系列运算后返回。

相当于Ti 以a和a[i-1]为输入参数,a和b为输出。

要求使用pv原语,实现T1~Tn-1的并发互斥,尽量保证最大限度的并发。

(a[i-1]为Ti-1线程的结果,)四、进程同步问题假设当前处于非抢占调度策略,进程只有两种方式可以放弃cpu,一个是主动调用系统调度函数yield(),此时进程主动放弃cpu;另一个方式是当进程执行I/O 操作时,系统将调度下一个进程。

试分析如下三种进程对,何时会出现不符合下列原则,并说明原因:1)空闲则入 2)有限等待 3)保证互斥。

第一种:Thread1(){yield();----critical section-----g=g+b;f=g-a; //这部分确切的语句想不起来了,但不影响。

只要记得临界区不能被打断。

----critical section-----}Thread2(){----critical section-----g=g+b;f=g-a;----critical section-----}第二种:Thread1(){yield();----critical section-----g=g+b;f=g-a;----critical section----- }Thread2(){----critical section-----g=g+b;f=g-a;----critical section-----yield();}第三种:Thread1(){yield();----critical section-----g=g+b;fstring=printf(……) ; // 调用I/O;f=g-a;----critical section-----}Thread2(){yield();----critical section-----g=g+b;f=g-a;----critical section-----}五文件操作题很长,大意如下给定两种文件系统,分别采用FAT方式和索引方式组织文件结构。

(完整版)清华大学数据结构试题及答案

(完整版)清华大学数据结构试题及答案

一、单选题(每题 2 分,共20分)1.1.对一个算法的评价,不包括如下(B )方面的内容。

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,则下列序列中不可能是栈的输出序列的是( C )A。

2 3 1 B. 3 2 1C。

3 1 2 D。

1 2 35.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)的联系时,称这种结构为_____________________。

《数据结构与算法》(清华)典型例题

《数据结构与算法》(清华)典型例题

6.3典型例题一、单项选择题[例6-1]数据结构用集合的观点可以表示为一个二元组DS=(D,R)。

其中,D是( ①)的有穷集合,R是D上( ②)的有限集合。

①A.算法B. 数据元素C. 数据操作D. 逻辑结构②A. 操作B. 映像C. 存储D.关系解析:由数据结构的集合形式化定义可知,本题答案为:①B;②D。

[例6-2]数据的常用存储结构中不包括( )。

A.顺序存储结构B.线性结构C.索引存储结构D.散列存储结构解析:数据通常有四种基本的存储方法,即顺序存储方法、链式存储方法、索引存储方法和散列存储方法。

由此可知,本题答案为:B。

[例6-3] 算法指的是( ①),它必须具备( ②)这三个特性。

①A.计算方法B.排序方法C.解决问题的步骤序列D.调度方法②A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性D.易读性、稳定性、安全性解析:算法是对特定问题求解步骤的一种描述,是由若于条指令组成的有限序列。

它必须满足以下性质:输人性、输出性、有穷性、确定性、无二义性和可行性。

由此可知,本题答案为:①㈠②B。

[例6-4] 在下面的程序段中,对x的赋值语句的执行频度为( )。

for(i=0;i<n;i++)for(j=0;j<n;j++)x=x+l:A.O(2n) B.O(n) C.O(n2) D.O(1bn)解析:语句的执行频度即语句重复执行的次数,属于算法的时间复杂度类题目。

本题中对x的赋值语句为一个二重循环的循环体,外层循环循环n次,内层循环也循环n次,显然此语句的执行次数为n×n=n2次。

由此可知,本题答案为:C。

二、填空题[例6-5]是数据的基本单位,通常由若干个组成,是数据的最小单位。

解析:本题是基本概念题,知识点为数据结构的相关概念。

本题答案为:数据元素;数据项;数据项。

三、应用题[例6-6] 简述数据结构的定义。

解析:数据结构是指数据元素之间的相互关系,即数据的组织形式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) 散列函数采用除留余数法,用%hashSize(取余运算)将各关键码映像到表中. 请指出每一个产生
冲突的关键码可能产生多少次冲突. (7分)
(2) 散列函数采用先将关键码各位数字折叠相加, 再用%hashSize将相加的结果映像到表中的办
法. 请指出每一个产生冲突的关键码可能产生多少次冲突. (8分)
清华大学计算机考试数据结构与程序设计试题
2002-11-13 10:38:25
试题内容:
一、试给出下列有关并查集(mfsets)的操作序列的运算结果:
union(1,2) , union(3,4) , union(3,5) , union(1,7) , union(3,6) , union(8,9) , union
{temp=a[i]: a[i]=a[right]; a[right]=temp;}
quicksort(a,left,i-1); //递归排序左子区间
quicksort(a,i+1,right); //递归排序右子区间
(1,8) , union(3,10) , union(3,11) , union(3,12) , union(3,13) , union(14,15) , union
(16,0) , union(14,16) , union(1,3) , union(1,14)。(union是合并运算,在以前的书中命名
/
G
此算法的基本思路是:依次从保存广义表的字符串ls中输入每个字符. 若遇到的是字母(假定以字母
作为结点的值), 则表示是结点的值, 应为它建立一个新的结点, 并把该结点作为左子女(当k=1)或
有子女(当k=2)链接到其双亲结点上. 若遇到的是左括号”(“, 则表明子表的开始,将k置为1;若遇
到的是右括号”)”, 则表明子表结果. 若遇到的是逗号”,”, 则表示以左子女为根的子树处理完
毕,应接着处理以右子女为根的子树, 将k置为2.
在算法中使用了一个栈s, 在进入子表之前,将根结点指针进栈, 以便括号内的子女链接之用. 在子
表处理结束时退栈. 相关的栈操作如下:
MakeEmpty(s) 置空栈
else top(s)->rightChild=p;
}
_______(5)_______
}
}
七、下面是一个用C编写的快速排序算法. 为了避免最坏情况,取基准记录pivot采用从left,right
和mid=[(left+right)/2]中取中间值, 并交换到right位置的办法. 数组a存放待排序的一组记录,
}
}
(1) 用C或Pascal实现三者取中子程序 median3(a,left,right); (5分)
(2) 改写 quicksort 算法, 不用栈消去第二个递归调用 quicksort(a,i+1,right); (5分)
(3) 继续改写 quicksort 算法, 用栈消去剩下的递归调用. (5分)
为merge)
要求
(1) 对于union(i,j),以i作为j的双亲; (5分)
(2) 按i和j为根的树的高度实现union(i,j),高度大者为高度小者的双亲; (5分)
(3) 按i和j为根的树的结点个数实现union(i,j),结点个数大者为结点个数小者的双亲; (5
分)
二、设在4地(A,B,C,D)之间架设有6座桥,如图所示:
BT=NULL; //置二叉树
BinTreeNode *p;
int k;
istream ins(ls); //把串ls定义为输入字符串流对象ins
Char ch;
ins>>ch; //从ins顺序读入一个字符
(3) 在整个广义表表示输入的结尾加上一个特殊的符号(例如”#”)表示输入结果.
例如,对于如右图所示的二叉树, 其广义表表示为A(B(D,E(G,)),C(,F))
A
/ \
B C
/ \ \
D E F
数据类型为Type, left和right是呆排序子区间的最左端点和最右端点.
Void quicksort(Type a&#;,int left,int right){
Type temp;
If(left<right){
Type pivot=median3(a,left,right);
Int I=left, j=right-1;
For( ; ; ){
While(i<j && a[i]<pivot) i++;
While(i<j && pivot<a[j]) j--;
if(i<j){
temp=a[i]; a[j]=a[i]; a[i]=temp;
I++; j--;
}
else break;
}
if(a[i]>pivot)
While(ch!=”#”){ //逐个字符处理,直到遇到'#'为止
Switch(ch){
case’(‘: _______(1)_______
k=1;
break;
case’)’: pop(s);
break;
case’,‘: _______(2)_______
要求从某一地出发,经过每座桥恰巧一次,最后仍回到原地
(1) 试就以上图形说明:此问题有解的条件是什么? (5分)
(2) 设图中的顶点数为n,试用C或Pascal描述与求解此问题有关的数据结构并编写一个算法,找出满
足要求的一条回路. (10分)
三、针对以下情况确定非递归的归并排序的运行时间(数据比较次数与移动次数):
break;
default: p=new BinTreeNode;
_______(3)_______
p->leftChild=NULL;
p->rightChild=NULL;
if(BT==NULL)
_______(4)_______
else if (k==1) top(s)->leftChild=p;
六、设一棵二叉树的结点定义为
struct BinTreeNode{
ElemType data;
BinTreeNode *leftChild, *rightChild;
}
现采用输入广义表表示建立二叉树. 具体规定如下:
(1) 树的根结点作为由子树构成的表的表名放在表的最前面;
(2) 每个结点的左子树和右子树用逗号隔开. 若仅有右子树没有左子树, 逗号不能省略.
(1) 输入的n个数据全部有序; (5分)
(2) 输入的n个数据全部逆向有序; (5分)
(3) 随机地输入n个数据. (5分)
四、简单回答有关AVL树的问题.
(1) 在有N个结点的AVL树中,为结点增加一个存放结点高度的数据成员,那么每一个结点需要增加多
少个字位(bit)? (5分)
(2) 若每一个结点中的高度计数器有8bit,那么这样的AVL树可以有多少层?最少有多少个关键
码? (5分)
五、设一个散列表包含hashSize=13个表项,.其下标从0到12,采用线性探查法解决冲突. 请按以下
要求,将下列关键码散列到表中.
10 100 32 45 58 126 3 29 200 400 0
Push(s,p) 元素p进栈
Pop(s) 进栈
Top(s) 存取栈顶元素的函数
下面给出了建立二叉树的算法, 其中有5个语句缺失. 请阅读此算法并把缺失的语句补上.
(每空3分)
Void CreateBinTree(BinTreeNode *&BT, char ls){
Stack<BinTreeNode*>s; MakeEmpty(s);
相关文档
最新文档