考研数据结构题库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题(30分)
1.在数据结构中,从逻辑上可以把数据结构分成()
(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)内部结构和外部结构(D)线性结构和非线性结构
2.算法分析的两个主要方面是()
(A)数据复杂性和程序复杂性(B)可读性和文档性
(C)时间复杂度和空间复杂度(D)正确性和简单性
3.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。
(A) 8 (B)63.5 (C)63 (D)7
4.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行()
(A)s->next=p;p->next=s; (B) s->next=p->next;p->next=s;
(C)s->next=p->next;p=s; (D)p->next=s;s->next=p;
5. 栈结构通常采用的两种存储结构是()
(A)线性存储结构和链表存储结构(B)散列方式和索引方式
(C)链表存储结构和数组(D)线性存储结构和非线性存储结构
6. 设一数列a,b,c,d,e,f,通过栈结构不可能排成的顺序数列为()。
(A)c,b,e,f,d,a (B)a,e,d,f,b,c
(C)b,d,c,e,a,f (D)d,e,c,f,b,a
7. 设循环队列Q[N]的头尾指针为F、R,头指针F总是指在队列中的第一个元素的前一位置,则队列中元
素计数为()。
(A)R-F(B)N-(R-F)(C)(R-F+N)%N(D)(F-R+N)%N
8. 设字符串s1=’ABCDEFG’,s2=’PQRST’,则运算s=strcat(strsub(s1,2,strlen(s2)),strsub
(s1,strlen(s2),2))后结果为()。
(A)‘BCQR’(B)’BCDEF’(C)’BCDEFG’(D)’BCDEFEF’
9.设有一个二维数组A[10][15],数组按行存放,假设A[0][0]存放位置在644,每个元素占一个空间,则A[4][5]
在()位置.
(A) 672 (B)626 (C)709 (D)724
10.设二叉树根结点的层次为1,所有含有63个结点的二叉树中,最小高度是()
(A) 6 (B) 5 (C) 4 (D) 7
11.设结点x和结点y是二叉树T中的任意两个结点,若在前序序列中x在y之前,而在后序序列中x在y
之后,则x和y的关系是()
(A)x是y的左兄弟(B)x是y的右兄弟(C)y是x的祖先(D)y是x的孩子
12.具有n个顶点的无向完全图的边数为()。
(A) n(n-1)/2 (B)n(n-1) (C)n2 (D)n2-1
13.请指出在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找关键码12需做()次关键码比较。
(A)5 (B)4 (C)3 (D)2
14.如果只想得到10240个元素序列中第5个最大元素之前的部分排序的序列,用()方法最快。
(A)起泡排序(B)快速排序(C)简单选择排序(D)堆排序
15.设有字符序列{Q、H、C、Y、P、A、M、S、R、D、F、X},问新序列{F、H、C、D、P、A、M、Q、R、S、Y、
X}是下列哪个排序算法一趟扫描的结果。()
(A)起泡排序(B)初始步长为4的shell的排序
(C)以第一个元素为分界元素的快速排序(D)二路归并排序
二、填空题(17分)
1.设有一对称矩阵A[n][n],按行优先次序存放在一维数组S[m]中,在S中只存放A的下三角元素。请写出计算矩阵元素A[i][ j]在数组S中下标的公式
),则下面式子tail(tail(A) ) 的值为;
4.对某二叉树进行前序遍历的结果为EBADCFHGIKJ,中序遍历的结果为ABCDEFGHIJK,则后序遍历的结果为。
5.给定表(503,87,512,61,908,170,897,275,653,462),用筛选法建立初始堆(大根),则初始堆表为。
三、应用题(30分)
1.一个二叉树按顺序方式存储在一个一维数组中,如图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(2)写出按前序、中序、后序遍历该二叉树所得的结点序列。
2.用序列(46,68,45,139,70,58,101,10,88,94)建立一个二叉排序树,画出该树,并求在等概率情况下查找成功的平均查找长度。
3.字符a,b,c,d,e,f,g的使用频度分别是0.07,0.09,0.12,0.22,0.20,0.27,0.03,写出a,b,c,d,e,f,g的Huffman编码(在构造哈夫曼树时,要求左子树根结点的权值小于等于右子树根结点的权值)。
4. 图1是用邻接表存储的图,画出此图,并写出从C点开始按深度优先遍历该图的结果。
5.设哈希函数H(K)=k%13,给定键值序列为19,1,23,14,55,20,84,27,68,11,10,77,处理冲突的方法为线性
探测再散列,试在0~18的散列地址空间中对该关键字序列构造哈希表,并计算该表的成功查找的平均查找长度。
6.应用希尔排序算法从小到大进行排序,键值序列为503,17,512,908,170,897,275,653,426,增量序列为{4,
2,1},试写出每趟排序的结果。
四、算法设计题(18分)
1.设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:
(1)找出最大值结点,且打印该数值;
(2)若该数值是偶数,则将其与直接后继结点的数值交换;
(3)若该数值是奇数,则将其直接后继结点删除;
2.设一颗二叉树以二叉链表为存储结构,设计一个算法将所有结点的左、右子树相互交换。
五、算法理解题(5分)
有下列程序:
#define MAXN 6 /*顶点数 */
#include "stdio.h"
void delete(int cost[][MAXN],int s,int t)