数据结构(C语言版)考研复习题.doc
《数据结构(C语言版)考研复习题.doc》由会员分享,可在线阅读,更多相关《数据结构(C语言版)考研复习题.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构(C语言版)考研复习题第一章 绪论1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。1.2 常用的存储表示方法有哪几种? 1.3 算法的时间复杂度仅与问题的规模相关吗?1.4 有时为了比较两个同数量级算法的优劣,须突出主项的常数因子,而将低次项用大O记号表示。例如,设T1(n)=1.39nlgn+100n+256=1.39nlgn+O(n), T2(n)=2.0nlgn-2n=2.0lgn+O(n), 这两个式子表示,当n足够大时T1(n)优于T2(n),因为前者的常数因子小于后者。请用此方法表示下列函数,并指出当n足够大时,哪一个较优
2、,哪一个较劣? 函数 大O表示优劣 (1) T1(n)=5n2-3n+60lgn 5n2+O(n) (2) T2(n)=3n2+1000n+3lgn 3n2+O(n) (3) T3(n)=8n2+3lgn 8n2+O(lgn) (4) T4(n)=1.5n2+6000nlgn 1.5n2+O(nlgn) 第二章 线性表2.1 试描述头指针、头结点、开始结点的区别、并说明头指针和头结点的作用。2.2 何时选用顺序表、何时选用链表作为线性表的存储结构为宜?2.3 为什么在单循环链表中设置尾指针比设置头指针更好?2.4 下述算法的功能是什么?LinkList Demo(LinkList L) / L
3、 是无头结点单链表ListNode *Q,*P;if(L&L-next)Q=L;L=L-next;P=L;while (P-next) P=P-next;P-next=Q; Q-next=NULL;return L;/ Demo2.5设线性表的n个结点定义为(a0,a1,.an-1),重写顺序表上实现的插入和删除算法:InsertList 和DeleteList. 2.6 设顺序表L是一个递减有序表,试写一算法,将x插入其后仍保持L的有序性。2.7 写一算法在单链表上实现线性表的ListLength(L)运算。2.8 写一算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同。第三章
4、 栈和队列3.1 设将整数1,2,3,4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请回答下述问题:(1)若入、出栈次序为Push(1), Pop(),Push(2),Push(3), Pop(), Pop( ),Push(4), Pop( ),则出栈的数字序列为何(这里Push(i)表示i进栈,Pop( )表示出栈)?(2)能否得到出栈序列1423和1432?并说明为什么不能得到或者如何得到。(3)请分析 1,2 ,3 ,4 的24种排列中,哪些序列是可以通过相应的入出栈操作得到的。3.2 链栈中为何不设置头结点?3.3 循环队列的优点是什么? 如何判别它的空和满?3.4
5、 设长度为n的链队用单循环链表表示,若设头指针,则入队出队操作的时间为何? 若只设尾指针呢? 3.5 指出下述程序段的功能是什么?(1) void Demo1(SeqStack *S)int i; arr64 ; n=0 ;while ( StackEmpty(S) arrn+=Pop(S);for (i=0, i n; i+) Push(S, arri); /Demo1(2) SeqStack S1, S2, tmp;DataType x;./假设栈tmp和S2已做过初始化while ( ! StackEmpty (&S1)x=Pop(&S1) ;Push(&tmp,x);while ( !
6、 StackEmpty (&tmp) )x=Pop( &tmp);Push( &S1,x);Push( &S2, x);(3) void Demo2( SeqStack *S, int m) / 设DataType 为int 型SeqStack T; int i;InitStack (&T);while (! StackEmpty( S)if( i=Pop(S) !=m) Push( &T,i);while (! StackEmpty( &T)i=Pop(&T); Push(S,i);(4)void Demo3( CirQueue *Q) / 设DataType 为int 型int x; Se
7、qStack S;InitStack( &S);while (! QueueEmpty( Q )x=DeQueue( Q); Push( &S,x);while (! StackEmpty( &s) x=Pop(&S); EnQueue( Q,x );/ Demo3(5) CirQueue Q1, Q2; / 设DataType 为int 型int x, i , n= 0;. / 设Q1已有内容, Q2已初始化过while ( ! QueueEmpty( &Q1) ) x=DeQueue( &Q1 ) ; EnQueue(&Q2, x); n+;for (i=0; i=2)的k叉链表表示中,有
8、多少个空指针?6.8 假设二叉树包含的结点数据为1,3,7,12。(1)画出两棵高度最大的二叉树;(2)画出两棵完全二叉树,要求每个双亲结点的值大于其孩子结点的值。第七章 图7.1 在图7.23所示的各无向图中:(1)找出所有的简单环。(2)哪些图是连通图?对非连通图给出其连通分量。(3)哪些图是自由树(或森林)?7.2 在图7.24(下图)所示的有向图中: (1) 该图是强连通的吗? 若不是,则给出其强连通分量。(2) 请给出所有的简单路径及有向环。(3) 请给出每个顶点的度,入度和出度。(4) 请给出其邻接表、邻接矩阵及逆邻接表。7.3 假设图的顶点是A,B.,请根据下述的邻接矩阵画出相应
9、的无向图或有向图。 | 0 1 1 0 0 | | 0 1 1 1 | | 0 0 0 1 0 | | 1 0 1 1 | | 0 0 0 1 0 | | 1 1 0 1 | | 1 0 0 0 1 | | 1 1 1 0 | | 0 1 0 1 0 | (a) (b)7.4 假设一棵完全二叉树包括A,B,C.等七个结点,写出其邻接表和邻接矩阵。7.5 对n个顶点的无向图和有向图,采用邻接矩阵和邻接表表示时,如何判别下列有关问题? (1) 图中有多少条边? (2)任意两个顶点i和j是否有边相连? (3) 任意一个顶点的度是多少?7.6 n个顶点的连通图至少有几条边?强连通图呢?7.7 DFS和
10、BFS遍历各采用什么样的数据结构来暂存顶点?当要求连通图的生成树的高度最小,应采用何种遍历?7.8 画出以顶点v1为初始源点遍历图7.25(下图)所示的有向图所得到的DFS 和BFS生成森林。第八章 排序8.1以关键字序列(265,301,751,129,937,863,742,694,076,438)为例,分别写出执行以下排序算法的各趟排序结束时,关键字序列的状态。(1) 直接插入排序 (2)希尔排序 (3)冒泡排序 (4)快速排序(5) 直接选择排序 (6) 堆排序 (7) 归并排序 (8)基数排序上述方法中,哪些是稳定的排序?哪些是非稳定的排序?对不稳定的排序试举出一个不稳定的实例。8.
11、2 上题的排序方法中,哪些易于在链表(包括各种单、双、循环链表)上实现?8.3 当Rlow.high中的关键字均相同时,Partion返回值是什么?此时快速排序的的运行时间是多少?能否修改Partion,使得划分结果是平衡的(即划分后左右区间的长度大致相等)?8.4 若文件初态是反序的,则直接插入,直接选择和冒泡排序哪一个更好?8.5 若文件初态是反序的,且要求输入稳定,则在直接插入、直接选择、冒泡和快速排序中就选选哪种方法为宜? 8.6 有序数组是堆吗?8.7 高度为h的堆中,最多有多少个元素?最少有多少个元素?在大根堆中,关键字最小的元素可能存放在堆的哪些地方? 8.8 判别下列序列是否为
12、堆(小根堆或大根堆),若不是,则将其调整为堆:(1) (100,86,73,35,39,42,57,66,21);(2) (12,70,33,65,24,56,48,92,86,33);(3) (103,97,56,38,66,23,42,12,30,52,06,20);(4) (05,56,20,23,40,38,29,61,35,76,28,100). 第九章 查找9.1对含有n个互不相同元素的集合,同时找最大元和最小元至少需进行多少次比较?9.2 若对具有n个元素的有序的顺序表和无序的顺序表分别进行顺序查找,试在下述两种情况下分别讨论两者在等概率时的平均查找长度:(1)查找不成功,即表中
13、无关键字等于给定值K的记录;(2)查找成功,即表中有关键字等于给定值K的记录。9.3 画出对长度为18的有序的顺序表进行二分查找的判定树,并指出在等概率时查找成功的平均查找长度,以及查找失败时所需的最多的关键字比较次数。9.4 为什么有序的单链表不能进行折半查找?9.5 设有序表为(a,b,c,e,f,g,i,j,k,p,q),请分别画出对给定值b,g和n进行折半查找的过程。 9.6 将(for, case, while, class, protected, virtual, public, private, do, template, const ,if, int)中的关键字依次插入初态为空
14、的二叉排序树中,请画出所得到的树T。然后画出删去for之后的二叉排序树T,若再将for 插入T中得到的二叉排序树T是否与T相同?最后给出T的先序、中序和后序序列。9.7 对给定的关键字集合,以不同的次序插入初始为空的树中,是否有可能得到同一棵二叉排序树?9.8 将二叉排序树T的先序序列中的关键字依次插入一空树中,所得和二叉排序树T与T否相同?为什么?第十章 文件10.1 常见的文件组织方式有哪几种?各有何特点? 文件上的操作有哪几种? 如何评价文件组织的效率?10.2 索引文件、散列文件和多关键字文件适合存放在磁带上吗?为什么?10.3 设有一个职工文件,其记录格式为(职工号、姓名、性别、职务
15、、年龄、工资)。其中职工号为关键字,并设该文件有如下五个记录: 地址 职工号 姓名 性别 职务 年龄 工资 A 39 张恒珊 男 程序员 25 3270 B 50 王莉 女 分析员 31 5685 C 10 季迎宾 男 程序员 28 3575 D 75 丁达芬 女 操作员 18 1650 E 27 赵军 男 分析员 33 6280 (1)若该记录为顺序文件,请写出文件的存储结构; (2)若该文件为索引顺序文件,请写出索引表; (3)若该文件为倒排序文件,请写出关于性别的倒排表和关于职务的倒排表。10.4 在上题所述的文件中,对下列检索写出检索条件的表达式,并写出结果记录的职工号。(1)男性职工
16、(2)工资超过平均工资的职工;(3)职务为程序员和分析员的职工;(4)年龄超过25岁的男性程序员或分析员;10.5 B+树和B-树的主要差异是什么?模拟试题一一、单项选择(每题1分,共10分)1. 若广义表K满足head(K)=tail(K),则K为 () A.( ) B.( ( ) ) C. ( () ),( () ) D.( (),(),() )2.若要求尽可能快地对实数数组进行稳定的排序,则应选()A.快速排序 B.堆排序 C.归并排序 D.基数排序3. 请指出在顺序表2、5、7、10、14、15、18、23、35、41、52中,用二分法查找关键码12需做多少次关键码比较。()A.2 B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 语言版 考研 复习题
限制150内