数据结构综合习题1

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

综合习题1

一、单选题

1.以下说法正确的是()。

A.顺序存储方式的优点是存储密度大且插入、删除运算效率高

B.链表的每个结点中都恰好包含一个指针

C.线性表的顺序存储结构优于链式存储

D.顺序存储结构属于静态结构而链式存储结构属于动态结构

2.设栈的输入序列是1234,则()不可能是其出栈序列。

A. 1243

B. 2134

C. 1432

D. 4312

3.循环队列用数组q[m]存放其元素值,已知其头尾指针分别是front和rear,front指向队列头的前一位置,则当前队列为空的条件是( )。

A.front==rear

B.front+1==rear

C.front==rear+1

D.front==(rear+1)%m

4.深度为6的完全二叉树最少有( )个结点。

A. 32

B. 6

C.64

D.63

5.对于一个具有n个顶点e条边的有向图,若采用邻接表表示,则表头向量的大小为n,邻接表中结点总数是( )。

A.e/2

B.e

C.2e

D.n+e

6.堆排序是树形选择排序,堆的形状是一棵()。

A.完全二叉树

B.满二叉树

C.二叉排序树

D.平衡二叉树7.一组记录(46,79,56,38,40,84),用堆排序建立的初始堆是()。

A.79 46 56 38 40 84

B.84 79 56 38 40 46

C.84 79 56 46 40 38

D.84 56 79 40 46 38

8.最容易发挥快速排序算法长处的情况是()。

A.基本有序

B.完全有序

C.完全无序

D.数据量小

9.一组记录的关键字为(46,79,56,38,40,84),利用快速排序,以第一个关键字为基准得到的一次划分结果为()。

A.38,40,46,56,79,84

B.40,38,46,79,56,84

C.40,38,46,56,79,84

D.40,38,46,84,56,79

10.二分查找具有较高的查找效率,但使用该算法的前提是要求()。

A.顺序存储

B.顺序存储且预先有序

C.链式存储

D.链式存储且预先有序

二.填空题

1.在n个结点的顺序表中删除任意一个结点,表中结点平均移动次数为( )。2.将两个各有n个元素的有序表归并成一个有序表,其最多的比较次数是:。

3.两个栈共享空间s[n],s1栈顶t1,栈底0;s2栈顶t2,栈底n-1,则不发生上溢的条件是。

4.一棵完全二叉树有599个结点,则该二叉树中有个非终端结点。5.设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,B中右指针域为空的结点有个。

6.串相等的充分必要条件是。

7.在n个结点的线索二叉树中,线索的数目是个。

第三题判断题

1.数据元素是数据的最小单位。()

2.顺序存储方式只能用于存储线性结构。( )

3.在循环队列中不存在溢出问题。( )

4. 一个有根有向图是一棵树。 ( )

第四题综合题

1.已知一个森林中包含的结点集为{a,b,c,d,e,f,g,h},边集为{,,,,,}。要求:(1)画出该森林;(2)画

出该森林对应的二叉树;(3)给出前序遍历和后序遍历该森林得到的结点序列。

2.假设用于通信的电文仅由5个字母组成L={a,b,c,d,e},出现的频率为

F={4,6,3,5,8},试为这5个字母设计哈夫曼编码。

3.对由下图给定的连通网络,请选用普里姆(PRIM)算法或克鲁斯卡尔(KRUSCAL)算法构造该网络的最小生成树(要求给出构造过程),并简述该算法的基本思想。连通网络G:

4.对于给定的一组关键字(26,12,58,06,10,16,80,22,75),分别写出归并排序的各趟的排序结果。

5.给定的关键序列为(18,12,5,20,19,22,17),设散列表的长度为10,散列函数为H(k)=k%7,试画出线性探查法和拉链法解决冲突时构造的散列表,并求出等概率下查找成功和查找不成功的平均查找长度ASL。

第五题算法题

1.设一个字符串用一个带头结点的单链表存储。请设计一个算法,删除字符串中所有字符‘a’。结点类型名为linkstring,结点结构如下:

2.二叉树采用二叉链表存储,设计一个算法求一棵给定二叉树中没有左孩子的结点数。结点类型名为bitree,结点结构如下:

一、算法设计题

1.设顺序表L中的数据元素递增有序. 试写一个算法, 将e插入顺序表中, 要

求插入后保持该表的有序性.

void InsertElem(SqList &L, ElemType){

j=L.length-1;

while(L.elem[j]>e){

L.elem[j+1]=L.elem[j];

j++

}

L.elem[j+1]=e;

L.length++;

}

2.已知la是带头结点的单链表的头指针, 试编写一个逆序输出表中各个元素

的递归算法.

void TraverseLink(LinkList p){

if(p->next) TraverseLink(p->next);

printf(p->data);

}

相关文档
最新文档