数据结构与算法模拟试卷五

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构与算法》模拟试卷五

一、名词解释(5*3=15分)

数据结构完全二叉数 AOE网队列拓扑排序

二、填空题(1*16=16分)

1.在一个长度为n的循环链表中,删除其元素值为x的结点的时间复杂度为

______。

2.已知指针p指向某单链表中的一个结点,则判别该结点有且仅有一个后继结点

的条件是______。

3.如果入栈序列是1,3,5,…,97,99,且出栈序列的第一个元素为99,则出

栈序列中第30个元素为______。

4.一种抽象数据类型包括______和______两个部分。

5.线性表的链式存储方式中,每个结点包括两个域,分别是______和______ 。

6.在以HL为表头指针的带表头附加结点的单链表和循环单链表中,判断链表为

空的条件分别为单链表中______ 和 ______ 。

7.在一棵二叉树中,度为0的结点的个数是10,则度为2的结点个数是_________

8.一个有n个结点的二叉树的深度最大为___________,最小为__________

9.n个定点的连通图至少有_______条边。

10.二分查找的存储结构仅限于________,且是__________

11.在对一组记录(54,38,96,72,60,15,60,45,83)进行直接插入排序时,

当把第6个记录60插入到有序表时,为寻找插入位置需比较________次。

三、选择题(1*10=10分)

1.在一个不带头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,

则执行 _______。

A、HL=p; p->next=HL;

B、p->next=HL; HL=p;

C、p->next=HL; p=HL;

D、p->next=HL->next; HL->nxet=p;

2.在一个长度为n的顺序存储的线性表中,删除第i个元素(1≤i≤n+1)时,

需要从前向后依次移动_______个元素。

A、n-i

B、n-i+1

C、n-i-1

D、i

3.在一个顺序队列中,队首指针指向队首元素的_______位置。

A、当前

B、后一个

C、前一个

D、后面

4.计算递归函数如不用递归过程通常借助的数据结构是____。

A、线性表

B、双向队列

C、树

D、栈

5.如果T2是由有序树T转换来的二叉树,则T中结点的后序排列是T2结点的

____。

A、先序排列

B、中序排列

C、后序排列

D、层序排列

6.栈的插入和删除操作在_____进行。

7. A 栈顶 B 栈底 C 任意位置 D 指定位置

8.由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径

长度为_____。

A 24

B 71

C 48

D 53

8. 图的广度优先搜索类似于树的_____遍历。

A.先根 B.中根 C. 后根 D.层次

9. 在单链表中插入一个结点,要修改_____个结点的指针域。

A 1

B 2

C 3

D 4

10.二叉树有_____种基本形态。

A 2

B 3

C 4

D 5

四、计算和应用题(共21分)

1、假设用迪杰斯特拉(Dijkstra)算法求下列图中从顶点a到其余各顶点的最短路径,按求解过程依次写出各条最短路径及其长度。

2

12.R 13.48 14.70 15.33 16.65 17.24 18.56 19.12 20.92

写出在将它调整为大根堆的过程中每一次筛选后R的状态。

3、已知一组关键字为(19,14,23,1,68,20,27,83,99),试按哈希函数H(key) = key Mod 7和链地址法处理冲突构造哈希表

(同一链表中关键字按自小到大排列)。

五、算法填空(2*9=18分)

1.如果希望循环队列中的向量单元都能得到利用,则可设置一个标志域tag,每当尾指针和头指针值相同时,以tag的值为0或1来区分队列状态是“空”还是“满”。请对下列函数填空,使其分别实现与此结构相应的入队列和出队列的算法。

int EnQueue(CirQueue *Q,DataType x){

if( (1) ) return 0;

Q->data[Q->rear]=x;

Q->rear=(Q->rear+1)% MAXQSIZE

(2)

return 1;

}

int DeQueue(CirQueue *Q,DataType *x){

if( (3) ) return 0;

*x=Q->data[Q->front];

Q->front= (4) ;

(5) ;

return 1;

}

(1)

(2)

(3)

(4)

(5)

2.下列算法利用二分查找方法在有序表r中插入元素x,并保持表r的有序性,其中参数*n为表r的长度。请在空缺处填入合适的内容,使其成为一个完整的算法。

void BinInsert(SeqList r,int *n,DataType x)

{ int low=1,high=*n,mid,i;

while(low<=high)

{ mid= (1) ;

if (x.key

else (2) ;

}

for(i=*n; (3) ;i--)

r[i+1]=r[i];

(4) ;

*n++;

}

(1)

(2)

(3)

(4)

六、算法设计题(2*10=20分)

1.试写一个算法,逆置带头结点的单链表 L

2.给出二叉树的二叉链表存储结构,编写递归算法,计算二叉树中的叶子结点个

数。

相关文档
最新文档