没有合适的资源?快使用搜索试试~ 我知道了~
首页数据结构期末考试题目(10套含答案)
数据结构期末考试题目(10套含答案)

数据结构10套考试题目+答案解析,我们的期末考试题目基本都是从里面出的,全部刷一遍保证85+,分享给学弟学妹们
资源详情
资源评论
资源推荐

1
数据结构试卷(一) ................. 1
数据结构试卷(二) ................. 5
数据结构试卷(三) ................. 8
数据结构试卷(四) ................ 11
数据结构试卷(五) ................ 14
数据结构试卷(六) ................ 16
数据结构试卷(七) ................ 19
数据结构试卷(八) ................ 21
数据结构试卷(九) ................ 23
数据结构试卷(十) ................ 25
数据结构试卷(一)参考答案 ........ 27
数据结构试卷(二)参考答案 ........ 28
数据结构试卷(三)参考答案 ........ 30
数据结构试卷(四)参考答案 ........ 32
数据结构试卷(五)参考答案 ........ 34
数据结构试卷(六)参考答案 ........ 35
数据结构试卷(七)参考答案 ........ 37
数据结构试卷(八)参考答案 ........ 38
数据结构试卷(九)参考答案 ........ 39
数据结构试卷(十)参考答案 ........ 40
数据结构试卷(一)
一、单选题(每题 2 分,共 20 分)
栈和队列的共同特点是( A )。
A.只允许在端点处插入和删除元素
B.都是先进后出
C.都是先进先出
D.没有共同点
1. 用链接方式存储的队列,在进行插入运算时( D ).
A. 仅修改头指针 B. 头、尾指针都要修改
C. 仅修改尾指针 D.头、尾指针可能都要修改
2. 以下数据结构中哪一个是非线性结构?( D )
A. 队列 B. 栈 C. 线性表 D. 二叉树
3. 设有一个二维数组 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
4. 树最适合用来表示( C )。
A.有序数据元素 B.无序数据元素
C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据
5. 二叉树的第 k 层的结点数最多为( D ).
A.2
k
-1 B.2K+1 C.2K-1 D. 2
k-1
6. 若有 18 个元素的有序表存放在一维数组 A[19]中,第一个元素放 A[1]中,现进行二分
查找,则查找 A[3]的比较序列的下标依次为( D )
A. 1,2,3 B. 9,5,2,3
C. 9,5,3 D. 9,4,2,3
解析:计算的时候 low=0;high=18;
7. 对 n 个记录的文件进行快速排序,所需要的辅助存储空间大致为( C )
A. O(1) B. O(n) C. O(1og
2
n) D. O(n2)
解析:不断递归调用
8. 对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用 H(K)=K %9
作为散列函数,则散列地址为 1 的元素有( D )个,
A.1 B.2 C.3 D.4
9. 设有 6 个结点的无向图,该图至少应有( A )条边才能确保是一个连通图。
A.5 B.6 C.7 D.8
三、计算题(每题 6 分,共 24 分)
1. 在如下数组 A 中链接存储了一个线性表,表头指针为 A [0].next,试写出该线性表。
A 0 1 2 3 4 5 6 7
data
60
50
78
90
34
40

2
next
3
5
7
2
0
4
1
线性表为:(78,50,40,60,34,90)
01110
10101
11011
10101
01110
2. 请画出下图的邻接矩阵和邻接表。
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 时,每加入一个数据后堆的变化。见图 12
图 12
4
4
4
4
4
2
2
2
5
5
5
2
2
8
8
4
3
5
2
8
3
4

3
4.
图 11
四、阅读算法(每题 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 的功能;
查询链表的尾结点
(2)说明语句组 S2 的功能;
将第一个结点链接到链表的尾部,作为新的尾结点
(3)设链表表示的线性表为(a
1
,a
2
, …,a
n
),写出算法执行后的返回值所表示的线性
表。
返回的线性表为(a
2
,a
3
,…,a
n
,a
1
)
2. void ABC(BTNode * BT)
{
if (BT) {
ABC (BT->left);
ABC (BT->right);
cout<<BT->data<<' ';
}
}
该算法的功能是:
递归地后序遍历链式存储的二叉树
五、算法填空(共 8 分)
二叉搜索树的查找——递归算法:
bool Find(BTreeNode* BST,ElemType& item)
{
if (BST==NULL)
return false; //查找失败
else {
if (item==BST->data){
item=BST->data;//查找成功
return __ true __;}
else if(item<BST->data)
return Find(___BST->left __,item);
else return Find(____BST->right __,item);
}//if
}
六、编写算法(共 8 分)
统计出单链表 HL 中结点的值等于给定值 X 的结点数。

4
int CountX(LNode* HL,ElemType x)
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

5
数据结构试卷(二)
一、选择题(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 个顶点,则该完全无向图中有( )条边。
(A) n(n-1)/2 (B) n(n-1) (C) n
2
(D) n
2
-1
6.设某棵二叉树中有 2000 个结点,则该二叉树的最小高度为( )。
(A) 9 (B) 10 (C) 11 (D) 12
解析:区别:树的高度的定义,只有一个节点的树的高度为 0(则该题选择 B)
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
解析:pivotpos==i 时则不交换,i++
三、应用题(36 分)
1. 设一组初始记录关键字序列为(45,80,48,40,22,78),则分别给出第 4 趟简单选择
排序和第 4 趟直接插入排序后的结果。
(22,40,45,48,80,78),(22,40,45,48,80,78)
2. 设指针变量 p 指向双向链表中结点 A,指针变量 q 指向被插入结点 B,要求给出在结点 A
的后面插入结点 B 的操作序列(设双向链表中结点的两个指针域分别为 llink 和 rlink)。
q->llink=p; q->rlink=p->rlink; p->rlink->llink=q; p->rlink=q;
3. 设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用
二分查找,要求计算出查找关键字 62 时的比较次数并计算出查找成功时的平均查找长
度。
2,ASL=(1*1+2*2+3*4+4*2)=25/9
剩余40页未读,继续阅读


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论3