数据结构试卷(一).................. 1 数据结构试卷(二).................. 5 数据结构试卷(三).................. 7 数据结构试卷(四).................. 9 数据结构试卷(五)................. 12 数据结构试卷(六)................. 15 数据结构试卷(七)................. 17 数据结构试卷(八)................. 19 数据结构试卷(九)................. 21 数据结构试卷(十)................. 24 数据结构试卷(一)参考答案 ........ 27
数据结构试卷(二)参考答案 ........ 28 数据结构试卷(三)参考答案 ........ 29 数据结构试卷(四)参考答案 ........ 31 数据结构试卷(五)参考答案 ........ 33 数据结构试卷(六)参考答案 ........ 34 数据结构试卷(七)参考答案 ........ 37 数据结构试卷(八)参考答案 ........ 38 数据结构试卷(九)参考答案 ........ 39 数据结构试卷(十)参考答案 ........ 40
数据结构试卷(一)
一、单选题(每题 2 分,共20分)
1. 栈和队列的共同特点是( a )。 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点
2. 用链接方式存储的队列,在进行插入运算时( d ).
A. 仅修改头指针 B. 头、尾指针都要修改 C. 仅修改尾指针 D.头、尾指针可能都要修改
3. 以下数据结构中哪一个是非线性结构?( d )
A. 队列 B. 栈 C. 线性表 D. 二叉树
4. 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。c
A.688 B.678 C.692 D.696
5. 树最适合用来表示( c )。
A.有序数据元素 B.无序数据元素
C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据 6. 二叉树的第k层的结点数最多为( d ).
kk-1
A.2-1 B.2K+1 C.2K-1 D. 2
7. 若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( c d )
A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,3
8. 对n个记录的文件进行快速排序,所需要的辅助存储空间大致为 c A. O(1) B. O(n) C. O(1og2n) D. O(n2)
9. 对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有( c d )个,
A.1 B.2 C.3 D.4
10. 设有6个结点的无向图,该图至少应有( a )条边才能确保是一个连通图。 A.5 B.6 C.7 D.8 二、填空题(每空1分,共26分) 1. 通常从四个方面评价算法的质量:____时间 正确性_____、____占用内存_易读性____、
____复杂度__强壮性___和_____准确度_ 高效率___。
2. 一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为___3 0(n)_____。 3. 假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数
为_____9_____个,树的深度为_____3______,树的度为____2_____。
1
4. 后缀算式9 2 3 +- 10 2 / -的值为____3__-1____。中缀算式(3+4X)-2Y/3对应的后缀算
式为______3 4X* + 2Y* / -_________________________。 5. 若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指
针。在这种存储结构中,n个结点的二叉树共有____n_2n___个指针域,其中有_____n-1___个指针域是存放了地址,有________3__n+1______个指针是空指针。 6. 对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点
分别有___e+1_e___个和____e+1__2e__个。
7. AOV网是一种________有向无回路___________的图。
8. 在一个具有n个顶点的无向完全图中,包含有____n-1_n(n-1)/2___条边,在一个具有n
个顶点的有向完全图中,包含有____n-1___n(n-1)_条边。
9. 假定一个线性表为(12,23,74,55,63,40),若按Key % 4条件进行划分,使得同一余数的元
素成为一个子表,则得到的四个子表分别为___________(12,40)_________________、_______(23,63,55)________、_______(74)________________和_________( )_________________。
10. 向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度
______增加1____。
1. 在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为___0(n/2)
___ O(log2n) __,整个堆排序过程的时间复杂度为__0(1)__ O(nlog2n)____。
11. 在快速排序、堆排序、归并排序中,____堆排序__归并排序___排序是稳定的。 三、计算题(每题 6 分,共24分)
1. 在如下数组A中链接存储了一个线性表,表头指针为A [0].next,试写出该线性表。 A 0 1 2 3 4 5 6 7 data 60 50 78 90 34 40 next 3 5 7 2 A[0] A[3] A[2] A[7] A[1] A[5] A[4] A[0]
线性表为:(78,50,40,60,34,90)
2. 请画出下图的邻接矩阵和邻接表。
0 4 1
1. 邻接矩阵:
?0?1??1??1??01110?0101??1011??0101?1110??
3. 已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,
(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};
用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。 (1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)20
4. 画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。
2
四、阅读算法(每题7分,共14分)
1. LinkList mynote(LinkList L)
{//L是不带头结点的单链表的头指针 if(L&&L->next){
q=L;L=L->next;p=L; S1: while(p->next) p=p->next; S2: p->next=q;q->next=NULL;
}
return L; }
请回答下列问题:
(1)说明语句S1的功能; 判断p的下一节点是否为空,如不为空p则指向下一节点 查询链表的尾节点
(2)说明语句组S2的功能; 使P的下一节点赋值给q,并令q的下一节点为空指针。将第一个节点链接到链表的尾部,作为新的尾节点
(3)设链表表示的线性表为(a1,a2, …,an),写出算法执行后的返回值所表示的线性表。 a2,a3,…an,a1
2. void ABC(BTNode * BT) {
if BT {
ABC (BT->left); ABC (BT->right); cout<
该算法的功能是:判断是否为满二叉树 递归的后序遍历链式存储的二叉树 五、算法填空(共8分)
二叉搜索树的查找——递归算法:
bool Find(BTreeNode* BST,ElemType& item)
{
if (BST==NULL)
return false; //查找失败 else {
if (item==BST->data){
item=BST->data;//查找成功 return ____item__true_____;} else if(item
return Find(______BST->data____BST->left____,item); else return Find(_______item____BST->right____,item); }//if }
六、编写算法(共8分)
3
统计出单链表HL中结点的值等于给定值X的结点数。 int CountX(LNode* HL,ElemType x){ int count; node *head,*p; head = HL; p=head->next;
if(head->data!=null) {
while(p->next) {
if(p->data==x)count++; } } }
Struct node HL {
elemtype data; Struct node *next; }node;
int CountX(LNode* HL,ElemType x)
{ int i=0; LNode* p=HL;//i为计数器 while(p!=NULL)
{ if (P->data==x) i++; p=p->next;
}//while, 出循环时i中的值即为x结点个数 return i; }//CountX
4
数据结构试卷(二)
一、选择题(24分)
1.下面关于线性表的叙述错误的是( )。
(A) 线性表采用顺序存储必须占用一片连续的存储空间 (B) 线性表采用链式存储不必占用一片连续的存储空间 (C) 线性表采用链式存储便于插入和删除操作的实现 (D) 线性表采用顺序存储便于插入和删除操作的实现
2.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有( )个空指针域。 (A) 2m-1 (B) 2m (C) 2m+1 (D) 4m
3.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为( )。 (A) R-F (B) F-R (C) (R-F+M)%M (D) (F-R+M)%M
4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为( )。 (A) BADC (B) BCDA (C) CDAB (D) CBDA 5.设某完全无向图中有n个顶点,则该完全无向图中有( )条边。
22
(A) n(n-1)/2 (B) n(n-1) (C) n (D) n-1 6.设某棵二叉树中有2000个结点,则该二叉树的最小高度为( )。 (A) 9 (B) 10 (C) 11 (D) 12
7.设某有向图中有n个顶点,则该有向图对应的邻接表中有( )个表头结点。 (A) n-1 (B) n (C) n+1 (D) 2n-1
8.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( )。 (A) 2,3,5,8,6 (B) 3,2,5,8,6 (C) 3,2,5,6,8 (D) 2,3,6,5,8
二、填空题(24分)
1. 为了能有效地应用HASH查找技术,必须解决的两个问题是____________________和
__________________________。
2. 下面程序段的功能实现数据x进栈,要求在下划线处填上正确的语句。
typedef struct {int s[100]; int top;} sqstack; void push(sqstack &stack,int x) {
if (stack.top==m-1) printf(“overflow”);
else {____________________;_________________;} }
3. 中序遍历二叉排序树所得到的序列是___________序列(填有序或无序)。 4. 快速排序的最坏时间复杂度为___________,平均时间复杂度为__________。 5. 设某棵二叉树中度数为0的结点数为N0,度数为1的结点数为N1,则该二叉树中度数为
2的结点数为_________;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有_______个空指针域。
5
数据结构试题及答案
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)