十套数据结构试题及答案1

数据结构试卷(一).................. 1 数据结构试卷(一)参考答案 ........ 27 数据结构试卷(二).................. 5 数据结构试卷(二)参考答案 ........ 28 数据结构试卷(三).................. 8 数据结构试卷(三)参考答案 ........ 30 数据结构试卷(四)................. 11 数据结构试卷(四)参考答案 ........ 32 数据结构试卷(五)................. 14 数据结构试卷(五)参考答案 ........ 34 数据结构试卷(六)................. 16 数据结构试卷(六)参考答案 ........ 35 数据结构试卷(七)................. 19 数据结构试卷(七)参考答案 ........ 37 数据结构试卷(八)................. 21 数据结构试卷(八)参考答案 ........ 38 数据结构试卷(九)................. 23 数据结构试卷(九)参考答案 ........ 39 数据结构试卷(十)................. 25 数据结构试卷(十)参考答案 ........ 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 ).

kk-1

A.2-1 B.2K+1 C.2K-1 D. 2

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

7. 对n个记录的文件进行快速排序,所需要的辅助存储空间大致为( C ) A. O(1) B. O(n) C. O(1og2n) 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 next

3 5 7 2 0 4 1 1

线性表为:(78,50,40,60,34,90)

2. 请画出下图的邻接矩阵和邻接表。

?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时,每加入一个数据后堆的变化。见图12

2 4 4 2 2 2

图12 2 4 4 5 4 5 4 5 8 8 3

2

3 5 4 8 2

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)设链表表示的线性表为(a1,a2, ?,an),写出算法执行后的返回值所表示的线性表。

返回的线性表为(a2,a3,?,an,a1) 2. void ABC(BTNode * BT) {

if BT {

ABC (BT->left); ABC (BT->right); cout<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(itemdata)

return Find(___BST->left __,item); else return Find(____BST->right __,item); }//if }

六、编写算法(共8分)

统计出单链表HL中结点的值等于给定值X的结点数。 int CountX(LNode* HL,ElemType x) int CountX(LNode* HL,ElemType x) 3

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4