山东理工大学数据结构期末试题及复习资料

10-11学年第一学期计算机科学与技术专业张先伟、肖爱梅

一、填空(每空1分,共20分)

1、深度为k的完全二叉树至少有10个叶结点的二叉树中有2的结点。

2、设数组a[1..5,1..8]的基地址为200,每个元素占2个存储单元,若以行序为主序顺序存储,则元素

a[4,6]的存储地址为

3

4

5、要在一个单链表中p所指结点之后插入一个子链表,子链表第一个结点的地址为s,子链表最后一个

结点的地址为t, 。

6、设有向图G的存储结构用邻接矩阵A来表示,则A中第i行中所有非零元素个数之和等于顶点i的

i列中所有非零元素个数之和等于顶点i

7、对于表长为n的顺序存储的线性表,访问结点的时间复杂度为删除结点的时间复杂度为。

8、将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点

编号为1

9、己知有序表为(12,18,24,35,47,50,62,83,90,115,134),当用折半查找法查找100时,

10、Dijkstra

11、如果T2是由树T1转换而来的二叉树,那么T1中结点的后序遍历就是T2

12、广义表A= (d)则Head(Tail(Head(Tail(Tail(A)))))的值为

13、设无向连通图的顶点个数为n,则该图最少有

二、选择(每题2分,共20分)

1、若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是

A.快速排序B.堆排序C.归并排序D.直接插入排序

2、有五个元素按5,4,3,2,1

A. 3 2 1 5 4 B. 4 5 3 1 2 C. 3 4 5 2 1 D. 2 3 4 1 5

3、无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先

遍历,得到的顶点序列正确的是

A.a,b,e,c,d,f B.a,c,f,e,b,d C.a,e,b,c,f,d D.a,e,d,f,c,b

4、链表不具有的特点是

A.插入、删除不需要移动元素B.可随机访问任一元素

C.不必事先估计存储空间D.所需空间与线性表长度成正比

5、在一棵三叉树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度

为0的结点数为

A.4 B.8 C.6 D.5

6、若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除

一个元素,再加入两个元素后,rear和front的值分别是

A.2和4 B.1和5 C.4和2 D.5和1

7、若数据元素序列11,12,13,7,8,9,23,4,5是采用下列排序方法之一得到的第二趟排序后的

结果,则该排序算法只能是

A.起泡排序 B.插入排序 C.选择排序 D.二路归并排序

8、对稀疏矩阵进行压缩存储目的是

A.便于进行矩阵运算B.便于输入和输出C.节省存储空间D.降低运算的时间复杂度

9、在下面的程序段中,对x的赋值语句的频度为

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

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

x=x+1;

A.O(2n) B.O(n) C.O(log2n) D.O(n2)

10、双向链表中,在指针p指向的结点前插入指针q

A.p->prior=q; q->next=p; p->prior->next=q; q->prior=q;

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

C.q->next=p; q->prior=p->prior; p->prior->next=q; p->prior=q;

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

三、应用题(40分)

1、(6分)已知一个无向图G=(V,E),其中V={A,B,C,D,E,F},邻接矩阵表示如下所示。

请回答下列问题:

(1)请画出对应的图G。

(2)画出图G的邻接表存储结构。

2、(6分)对于关键字序列(503,87,512,61,908,120,897,275,653,462), 建立初始堆(小顶

堆)。

3、(8分)已知一棵二叉树的先序序列:A B D H I M E J C F K L G,中序序列:H D I M B J E A K F L C G,请

画出该二叉树,并简单说明理由。

4、(6分)采用哈希函数H(k)=3*k MOD 13,并用线性探测开放地址法处理冲突,在数列地址空间[0..12]

中对关键字序列22、41、53、46、30、13、1、67、51,构造哈希表(画示意图)。

5、(6分)下图为无向带权图,用克鲁斯卡尔算法构造其最小生成树,并写出选边的顺序。

6、(8分)对关键字序列{30,15,28,20,24,10,12,68,35},

(1)构造一棵二叉排序树;

(2)对初始序列构造一棵二叉平衡树。

四、算法阅读与设计题(本大题共2小题,共20分)

1、(8分)已知下列程序,Ls指向带头结点的单链表。

Typedefstruct node {

DataType data;

struct node * next;

} * LinkList;

void f30( LinkList Ls )

{ LinkList p, q;

q = Ls->next;

if ( q && q->next ) {

Ls->next = q->next;

p=q

while ( p->next )

p = p->next;

p->next = q;

q->next = NULL;

}

}

请回答下列问题:

(1)当Ls指向的链表如下图所示,请画出执行本函数之后的链表的结果。

(2)请简述算法的功能。

2、(12分)写出二叉树的二叉链表类型,设计算法求二叉树中度为1的结点的数目。(用自然语言给出设计思想,再用代码实现。

06-07学年第二学期计算机科学与技术专业张先伟

一.填空(每空1分,共20分)

1.数据的存储结构主要有两类:________存储结构和________存储结构。

2.栈与队列都是限定性的数据结构,栈的操作特性是____________,队列的操作特性是____________。

3.在顺序表中插入或删除一个元素,需要平均移动________元素,具体移动的元素的个数与______________有关。

4.组成串的数据元素只能是________,空串的长度是________。

5.广义表(a,(b))的深度是________,表尾是________。

6.深度为K的完全二叉树至少有____________个结点,具有100个结点的完全二叉树的深度是________。

7.N个定点的无向连通图至少有___________条边,图的遍历有广度优先搜索遍历和________搜索遍历两种方法。

8.在一个单链表中在指针P所指结点之后插入一个S结点,应执行的操作依次是:S —>next=______________和P—>next=________________。

9.影响哈希表查找长度的主要因素是____________________、____________________和哈希因子。

10.折半查找必须基于____________存储的________________表进行。

二.选择(每题2分,共20分)

1.一个带头结点的单链表,头指针为head,判断其是否为空的条件是________。

A、head == NULL

B、head—>next == NULL

C、head != NULL;

D、head—>next == head 2.设栈的输入序列是1,2,3,4,则________不可能是其输入序列。

A、1,2,4,3

B、2,1,3,4

C、4,3,1,2

D、3,2,1,4

3.稀疏矩阵的压缩存储不包含下面哪种方式________。

A、三元组顺序表

B、行逻辑连接的顺序表

C、邻接多重表

D、十字链表

4.有N个叶结点的哈夫曼树的结点总数是________。

A、不确定

B、2N

C、2N+1

D、2N-1

5.下列排序方法中,待排记录有序时花费时间反而最多的是________。

A、快速排序

B、希尔排序

C、起泡排序

D、堆排序

6.下面有关二叉树的说法正确的是________。

A、二叉树的度为2

B、二叉树的度可以小于2

C、二叉树中至少有一个节点的度数为2

D、二叉树中任何一个结点的度数都为2

7.堆的形状是一棵________。

A、二叉排序树

B、满二叉树

C、完全二叉树

D、平衡二叉树

8、关键路径是AOE网中________。

A、从源点到汇点的最长路径

B、从源点到汇点的最长回路

C、从源点到汇点的最短路径

D、从源点到汇点的最短回路

9、循环队列是空队列的条件是________。

A、Q—>rear == Q—>front

B、(Q—>rear+1)%maxsize == Q—>front

C、Q—>rear == 0

D、Q—>front == 0

10、在有向图G的拓扑排序序列中,若定点Vi在顶点Vj之前,则下列情形不可能出现的是________。

A、G中有弧

B、G中有一条从Vi到Vj的路径

C、G中没有弧

D、G中有一条从Vj到Vi的路径

三、问答与综合(共5个题目,36分)

1、(6分)什么是数据的逻辑结构?简述常见的逻辑结构的分类及其特点。

2、(8分)已知二叉树,其中序序列DBCAFGE,后序序列DCBGFEA,

(1)构造该二叉树,并简单说明理由;

(2)将该二叉树转换成相应的树(或森林)。

3、(8分)对于如下的无向网

(1)写出其邻接表;

(2)按照Prime算法求网的一棵最小生成树(写出过程)。

4、(8分)对下面的二叉排序树:

(1)求二叉排序树在等概率查找时平均查找长度;

(2)画出插入关键码16后的结果;

(3)画出对原树删除关键码40后的结果。

5、(6分)初始关键字序列为(30,4,28,58,5,13,90,47,18)

(1)写出对其做一趟直接插入排序后的结果;

(2)对其初始序列以30为枢轴做一次快速排序后的结果。

四、算法阅读(共两个题目,12分)

1、阅读下面算法,说明该算法的功能,并分析其时间复杂度(已知h是带头结点的单链表的头指针)

Void rever( lnode *h)

{ lnode p,q;

p = h->next;

h->next = null;

while( p)

{ q = p;

p = p->next;

q->next = h->next;

h->next = q;

} //end while

} //end rever

2、下面是折半查找算法,在____处将算法语句补充完整。

int Search ( SSTable ST, KeyType key)

{ low = 1; high = ST.lengh;

while( __________)

{ mid = ________________;

if ( EQ( key, ST.elem[mid].key ) )

return mid;

else if ( LT( key, ST.elem[mid].key ) )

________________;

else

low = mid + 1;

}

return 0;

}

五、编写算法(共1题,12分)

编写算法,遍历二叉树,求该二叉树叶子节点的个数。

int LeafNum ( lnode *root )

相关文档
最新文档