数据结构与算法试题及答案Word格式文档下载.docx
《数据结构与算法试题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构与算法试题及答案Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
数据的逻辑结构:
结构左义中的"
关系”,描述的是数据元素之间的逻借关系;
包括线性结构(线性表、栈、队、串、数组)和非线性结构(图形结构、树形结构);
数据的存储结构(物理结构):
数据结构在计算机中的表示(又称映像),包括数据元素的表示和关系徳表示。
有顺序存贮(向量存贮)、链式存贮、索引存贮、散列存贮。
线性表
1、一个线性表第一个元素的存储地址是100,每个元素的长度
为2,则第5个元素的地址是(B)。
(A)110(B)108(C)100(D)120
2、向一个有127个元素的顺序表中插入一个新元素并保持原来
顺序不变,平均要移动(C)个元素。
(A)64(B)63(C)63.5(D)7
2、线性表采用链式存储结构时,其地址(D)。
(A)必须是连续的(B)部分地址必须是连续的
(C)一定是不连续的(D)连续与否均可以
3.在一个单链表中,若p所指结点不是最后结点,在P之后插
入s所指结点,则执行但)。
(A)s->
next=p;
p->
next=s;
(B)s->
next=p->
next;
(C)s->
p=s;
(D)p->
s->
4.在一个单链表中,若删除p所指结点的后续结点,则执行(A)
(A)p->
next->
(B)p=p->
p->
(C)p->
(D)p=p->
5.在长度为n的顺序表的第i(lWiWn+l)个位置上插入一个
元素,元素的移动次数为亠,删除第i个位置元素,元素的移动次数为B°
A.n-i+1B.n-iC.iD.i-1
6.算法分析的两个主要方面是_A_。
A.空间复杂性和时间复杂性B.正确性和简明性
C.可读性和文档性D.数据复杂性和程序复杂性
7.写出顺序表插入、删除及就地逆置算法(见实验)
//顺序表的逆置
voidreverse(SqListL)
inti,j,k;
for(i=0,j=L.length-1;
i<
j;
i++,j—)
k=L.elem[i];
L.elem[i]=L・elem[j];
Lelem[j]=k;
}
8、写出单链表插入、删除、求表长及逆置算法(见教材"
2页算法2.19)
排序
1•下列排序算法中,时间复杂度不受数据初始状态影响,恒为0(log2n)的是_A_。
A.堆排序B.冒泡排序
C.直接选择排序D.快速排序
解析:
本题考察的是排序的性能。
2.若表R在排序前已按键值递增顺序排列,则_A_算法的比较次数最少。
A.直接插入排序B.快速排序
C.堆排序D.选择排序
3.已知一组关键字{29,18,23,1,68,41,8,65},请分别写出按插入排序、冒泡排序、直接选择排序和快速排序方法排序过程,每一趙排序结束时的关键字的状态。
(见书本P47-P52)
4.写出简单排序算法和一场快速排序算法等等
栈的基础知识
1、若入栈序列是a,b,c,d,e,则不可能的出栈序列是(C)。
(A)edcba(B)decba(C)dceab(D)abcde
2、判定一个栈ST(最多元素为m。
)为空的条件是(B)。
(A)ST.top!
=-1(B)ST.top=-1
(C)ST.top!
=mo-1(D)ST.top=mo-1
3、判定一个栈ST(最多元素为m。
)为满的条件是(D)。
=0(B)ST.top=0
=-1(D)ST.top=m0-l
4、在n(n>
0)个元素的顺序栈中插入1个元素的时间复杂度为(C)。
A.O(nlog2n)B.0()C.0
(1)D.O(n)
5、在n(n>
0)个元素的顺序栈中删除1个元素的时间复杂度为(D)。
A.0(n)B.0()C.O(nlog2n)D.0
(1)
填空题部分
1、栈的特点是(后进先出(或UFO)),队列的特点是(先进先出(或FIFO))。
2、线性表、栈和队列都是(线性)结构,可以在线性表的(任何)位置插入和删除元素,栈只能在(表尾)插入和删除元素,队列只能在(表尾)插入元素和(表首)删除元素。
3、若队列的入队序列是1,2,3,4,则出队序列是(B)。
(A)4,3,2,1(B)1,2,3,4(C)1,4,3,2(D)3,2,4,1
队列基础知识
1、循环队列用数组A[0,m-1]存放其元素值,已知其头尾指
针分别是front和rear则当前队列中的元素个数是(A)。
(A)(rear-front+m)%m(B)rear-front+1
(C)rear-front-1(D)rear-front
2、以数组Q[0...m-1]存放循环队列中的元素,变量rear
和qulen分别指示循环队列中队尾元素的实际位置和当前
队列中元素的个数,队列第一个元素的实际位置是(D)。
(A)rear—qulen(B)rear—qulen+m
(C)m—qulen(D)l+(rear+m—qulen)%m
3.设循环队列中数组的下标范围是1〜n,其头尾指针分别为f和r,则判断循环队列满的条件为但)
A.r=fB.f=(r+l)%n
C.r=(f+l)%(n+1)D.r=f+l
一、填空题
1、线性表、栈和队列都是—线性一结构,线性表可以在_任意位巻插入和删除元素:
对于栈只能在栈顶_插入和删除元素;
对于队列只能在—队尾插入和—队首删除元素。
2、栈是一种特殊的线性表,允许插入和删除运算的一端称为—栈去,不允许插入和删除运算的一端称为_栈底。
3、队列—是被限泄为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
4、向栈中压入元素的操作是先_移动栈顶指针,后_存入元素。
5、在操作序列push⑴,push
(2),pop(),push(5),push(7),pop(),push(6)之后,栈顶元素是_6,栈底元素是(push(k)表示整数k入栈,pop表示栈顶元素岀栈。
)
6、用单链表表示的链式队列的队头是在链表的—链尾一位置。
二叉树和树
1.二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,
这种说法(A)(A)正确(B)错误
2.由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,
这种说法(B)(A)正确(B)错误
3.已知某二叉树的后序遍历序列是dabec。
中序遍历序列是debac,它
的前序遍历序列是(D
(A)acbed(B)decab(C)deabc(D)cedba
4.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访
问顺序是dgbaechf,则其后序遍历的结点访问顺序是(D
(A)bdgcefha(B)gdbeefha(C)bdgaechf(D)gdbehfea
5.在一非空二叉树的中序遍历序列中,根结点的右边(A)
(A)只有右子树上的所有结点(B)只有右子树上的部分结点
(C)只有左子树上的部分结点(D)只有左子树上的所有结点
6.任一二叉树的叶子结点在先、中和后序遍历序列中的相对次序(A)。
(A)不发生改变(B)发生改变(C)不能确定(D)以上都不对
7、对二叉树从1开始进行连续编号,要求每个结点的编号大于其
左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号
小于其右孩子的编号,则可采用_J遍历实现编号。
A.无序B.中序C.后序D.从根开始的层次遍历
8•深度为k的二叉树的结点总数,最多为£
个。
A)2klB)log2kC)2k-1D)2k
9.深度为9的二叉树中至少有9个结点。
A)29B)28C)9D)29-l
10.二叉树有n个叶子,没有度为1的结点,共有2n・l个结点
分析:
度为2的结点有n・l个,所以共2n・l个结点。
11.设一棵完全二叉树具有1000个结点,则它有500个叶子结
点,有型个度为2的结点,有1个结点只有非空左子树,有—
0个结点只有非空右子树。
12•—棵深度为6的满二叉树有32个叶子和31个分支结点。
13.n个叶子结点的二叉树最少有2rv:
L结点°
作业:
K一棵哈夫曼树有19个结点,则其叶子结点的个数是(10)o
2、有七个带权结点,其权值分别为3,7,8,2,6,10,14,试以它们为叶结点构造一棵哈夫曼树(请按照每个结点的左子树根结点的权小于等于右子树根结点的权的次序构造),并计算出带权路径长度WPL及该树的结点总数。
例:
50
29
1514
78
2x4+3x4+6x3+10x2+7x3+8x3+14x2=131
21
1110
56
23
上图为树,
所以带权路径长度为
3、有一电文共使用五种字符a,b,c,d,e,其出现频率依次为4,7,5,2,9°
(1)、试画出对应的编码哈夫曼树(要求左子树根结点的权小于等于右子树
根结点的权)。
(2)、求出每个字符的哈夫曼编码。
(3)、求出传送电文的总长度。
(4).并译出编码系列11000111000101011的相应电文。
(P143)
(1)
27
II
189
117
65
1I
24
WPL=9*1+严2+5*3+(2+4)*4=62
(2)5种字符a、b、c、d、e的哈夫曼编码依次为011、10、00、010、11
4、对于给定的一组权值W={1,3,7,8,14,20,28}建立哈夫曼树,并计算带
权路径长度。
5、假定有7个字符a,b,c,d,e,f,g出现的概率分别为0.07,0.09,0.14,0.23,
0.44,0.58,0.77,求这7个字符的哈夫曼编码。
6、某通信过程中使用的编码有8个字符AbCQEFGH,英出现的次数分别为20,6,34,11,9,
7,8,5。
若每个字符采用3位二进制数编码,整个通信需要多少字节?
请给出哈夫曼编码,以及整个通信使用的字节数?
7、对右图所示的普通树,完成以下操作:
(1)分别画出这棵树的双亲表示法、孩子表示法的存储结构图:
(2)将这棵树转换成二叉树:
(3)写出对上小题得到的二叉树分别进行前序、中序、
后序遍历所得到的遍历序列。
8,设一棵二叉树的先序、中序遍历序列分别为ABDFCEGH和BFDAGEHC,请写出分析过程并画出这棵二叉树,然后写出该二叉树的后序遍历序列。
第7章图
选择题
1.在一个图中,所有顶点的度数之和等于所有边数的(C)倍。
(A)J/2(B)1(C)2(D)4
2.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的但)倍。
(A)1/2(B)1(C)2(D)4
3.一个有n个顶点的无向图最多有(C)条边。
(A)n(B)n(n-l)(C)n(n-l)/2(D)2n
4.具有4个顶点的无向完全图有(A)条边。
(A)6(B)12(C)16(D)20
5.具有6个顶点的无向图至少应有(A)条边才能确保是一个连通图。
(A)5(B)6(C)7(D)8
6.在一个具有n个顶点的无向图中,要连通全部顶点至少需要(C)条边。
(A)n(B)n+1(C)n-1(D)n/2
7.对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小为(D)。
(A)n(B)(n-l)2(C)n-1(D)n2
8.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表头数组的大小为(A),所有邻接表中的结点总数是(C)。
1(A)n(B)n+1(C)n-1(D)n+e
2(A)e/2(B)e(C)2e(D)n+e
9.在含有n个项点有e条边的无向图的邻接矩阵中,零元素的个数为(D)。
A.eB.2eC.n2-eD.n2-2e
io•图的深度优先遍历算法类似于树的(A)0
(A)先根遍历(B)后根遍历(C)按层遍历
图的广度优先遍历算法类似于树的(C
1.门个顶点的连通图至少(N・l)条边。
2.在一个无向图的邻接表中,若表结点的个数是”,则图中
边的条数是(M/2)条。
3.分别用普里姆和克鲁斯卡尔算法构造下图所示网络的最小
生成树。
4.分别求出图4从v2出发按深度优先搜索和广度优先搜索算法遍历得到的顶点序列(假设图的存储结构釆用邻接矩阵表示)。
图45.已知一个有向图的邻接表如图5所示,求出根据深度优先搜索算法从顶点vl出发遍历得到的顶点序列。
6、对右边所示的有向图邻接矩阵:
1求出每个顶点的入度和岀度。
2画出图的邻接表;
3分别写出自顶点1岀发进行遍历所得的深度优先適历序列和广度优先遍历序列。
1
2
3
4
5
6
7
8
9
10
0・
7.
对右边所示的有向图:
画出图的邻接矩阵;
⑵
画出图的邻接表:
(3)分别画出由结点1出发得到的深度优先生成树和广度优先生成树。
(要求每一步选取的结点为未访问过的且编号最小的邻接点。
求优先生成树时忽略边的权值。
深度优先遍历序列:
1->
2->
4->
3->
6->
5->
.1度优先遍历序列:
7->
8.已知一个图的立点集V和边集E分别为;
V={1,2,3,4,5,6,7}:
E={<
l,2>
/<
l/3>
l/4>
2/3>
3/5>
/<
3/7>
4/3>
<
5/7>
7/6>
}:
画出该图,并给出全部可能的拓扑排序序列。
9.如下图所示,计算出各事件(顶点)的ve(vi)和vl(vi)的值及各活动(弧)ee(ai)和el(ai)的值,并写出所有的关键路径。
(8分)
10.分别用普里姆算法和克鲁斯卡尔算法计算下图的最小生成树。
11.对右边所示的有向图:
(1)、求出带权邻接矩阵:
⑵.用Dijkstra算法求从顶点1到其它各顶点的最短路径。
•已知一组关键字{19,14,23,1,6&
20,85,9},采用哈希函数H(key)=keyMOD13,请分别采用以下处理冲突的方法构造哈希表,并求各自的平均査找长度。
1)采用线性探测再散列;
2)采用二次探测再散列
3)采用链地址法。