数据结构模拟题及答案

数据结构模拟题及答案
数据结构模拟题及答案

数据结构试题(A05)

一、选择题(共10小题,每小题1分,共10分)

1.下面程序段的时间复杂度是( )

m=0;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

m=m+1;

A. O(n2)

B.O(m+n+1)

C.O(m+n)

D. O(n)

2.在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是( )

A.p=p->next;

B.p->next=p->next->next;

C.p->next=p;

D.p=p->next->next;

3.在长度为n的顺序表,当在任何位置上删除一个元素的概率相等时,删除一个元素需要移动的元素的平均个数为( )

A.n/2

B.(n-1)/ 2

C.(n+1)/2

D.(n+2)/2

4.一个栈的输入序列为 1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )

A. 2 3 4 1 5

B. 5 4 1 3 2

C. 2 3 1 4 5

D. 1 5 4 3 2

6.设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为( )

A. r-f

B. r-f+1

C. (r-f) mod n+1

D. (r-f+n) mod n

7.以下序列不是堆的是( )。

A.(100,85,98,77,80,60,82,40,20,10,66)

B.(100,98,85,82,80,77,66,60,40,20,10)

C.(100,85,40,77,80,60,66,98,82,10,20)

D.(10,20,40,60,66,77,80,82,85,98,100)

8.在有序表(12,24,36,48,60,72,84)中折半查找关键字72时所需进行的关键字比较次数为( )。

A. 3

B. 4

C. 5

D. 2

9.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。

A.选择排序

B.冒泡排序

C.快速排序

D.插入排序

二、填空题(共20小题,每小题1分,共20分)

1、在单链表中,删除指针P所指结点的后继结点的语句是。

2、线性表的两种存储结构分别是和。

3、己知完全二叉树的第4层有5个结点,则其叶子结点数是。

4、将下三角矩阵A[1….8,1….8]的下三角部分逐行地存储到起始地址为1000的内存单元中,已知每个元素占4个单元,则A[7,5]的地址是。

5、有n个结点的强连通有向图G至少有条弧。

7、在有序表A[1….20]中,采用二分查找算法查找元素值等于A[12]的元素,所

比较的元素的下标依次为。

8、直接选择排序算法所执行的元素交换次数最多为。

9、在带有头结点的单链表L中,第一个元素结点的指针是。

10、具有100个结点的完全二叉树的深度是。

11、在一个长度为n的顺序表中第i个元素(1≤i≤n)之前插入一个元素时,需向后移动___________个元素。

12、在队列中,允许进行插入操作的一端称为________,允许进行删除操作的一端称为________。

13、在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为head= 。

15、对于一棵具有n个结点的树,该树中所有结点的度数之和为__________。

16、 8层完全二叉树至少有个结点,拥有300个结点的完全二叉树的最大层数为。

17、有n个结点的有向连通图,其边数最多为____条,最少有____条。

18、设n0为赫夫曼树的叶子结点数目,则该赫夫曼树共有_____个结点。

19、顺序查找n个元素的顺序表,若查找成功,则比较关键字的次数最多为____次。

三、判断题(共10小题,每小题1分,共10分)

判断下列各题是否正确,若正确,在()内打“√”,否则打“╳”。

1、()若某二叉树的叶子结点数为1,则其先序序列和后序序列一定相反。

2、()线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。

3、()在栈为空的情况下,不能作出栈操作,否则产生下溢。

5、()在一个有向图的邻接表中,如果某个顶点的链表为空,则该顶点的度一定为0。

6、()如果有向图G=(V,E)的拓扑序列唯一,则图中必定仅有一个顶点的入度为0,一个顶点的出度为0。

8、()广义表的长度是指广义表中原子的个数。

9、()在快速排序算法中,以待排序的n个记录中的第一个记录的键值为基准,将所有记录分为两组,该记录就在这两组的中间,这也是该记录的最终位置。

10、()在一个大根堆中,最小元素不一定在最后。

四、解答题(共30分,其中第1、2小题各占7分,第3、4小题各占8分)

1、已知二叉树T的先序遍历序列为ABCDEFGHIJKLMN,中序遍历序列为DCFEGBAIHKJMLN。请画出该二叉树T,并写出它的后序遍历序列。

2、已知一个无向图的顶点集为{a, b, c, d, e} ,其邻接矩阵如下所示

a

b

c

d

e

0100110010000110110110110??????????

??????

(1)画出该图的图形;

(2)根据邻接矩阵从顶点a 出发进行深度优先遍历和广度优先遍历,写出相应的遍历序列。

3、已知线性表的关键字集合{87, 25, 310, 08, 27, 132, 68, 95, 187, 123, 70, 63, 47},已知哈希函数为H(k)=k MOD 13,采用拉链法处理冲突,设计出该哈希表的结构。

4、 输入下列整数序列,画出建立的二叉排序树,最后分别图示将其中50,86删除后的二叉排序树。(86,50,78,90,64,55,23,100,40,80,45)。

五、算法题(共30分,其中第1、2小题各占6分,第3、4小题各占9分)

1、假设一个单循环链表L 的数据域为整型,设计一个算法,求该表中所有结点的数据之和。

2、设某二叉树以二叉链表为存储结构,请写出求其高度的递归算法。

3、假设有两个按元素值递增有序排列的线性表A 和B ,均以单链表作存储结构,请编写算法将表A 和表B 归并成一个按元素非递减有序(允许值相同)排列的线性表C 。

4、试写出二叉链表表示的二叉树的先序遍历的非递归算法。

数据结构试题(A05参考答案)

一、选择题1~5:ABBBB 6~9:DCDD

二、填空题

1、p->next=p->next->next;

2、顺序,链接

3、6

4、1132

5、n

6、O(n 2)

7、10,15,12

8、n-1

9、L->next

10、7

11、n-i+1

12、队尾,队头

13、p->next->next

14、s->prior->next=s , (或p->prior->prior->next=s )

15、n-1

16、128,9

17、n(n-1),n

18、2n0-1

19、n

三、判断题

1、√

2、╳

3、√ 5、╳

6、√ 8、╳ 9、√ 10、√

四、简答题

1、二叉树如下图:

其后序遍历序列是:DFGECBIKMNLJHA

2、(1)该图的图形如下图:

(2)根据邻接矩阵从顶点a出发进行深度优先遍历和广度优先遍历,其深度优先遍历序列是abdce,广度优先遍历序列是abedc。

3、得到的哈希表如下图所示:

4、建立的二叉排序树如下图:

删除50后的二叉排序树如下图:

再次删除86后的的二叉排序树如下:

五、算法题

1、解:设存储结构如下:

typedef struct node

{ int data;

struct node *next;

}Lnode, *CLinkList;

且设单循环链表是带头结点的,算法如下:int sumOfLinkList(CLinkList L)

{int sum=0; Lnode *p=L->next;

while(p!=L){sum+=p->data; p=p->next;} return sum;

}

2、解:设存储结构如下:

typedef struct node

{ElemType data;

struct node *lchild, *rchild;

}Tnode, *BinTree;

算法如下:

int depth(BinTree T)

{ if(!T) return 0;

else

{ int DL, DR;

DL=depth(T->lchild); DR=depth(T->Rchild); if(DL>DR) return DL+1; else return DR+1;

}

}

3、(答案略)

4、(答案略)

相关主题
相关文档
最新文档