数据结构B试题及答案.docx
《数据结构B试题及答案.docx》由会员分享,可在线阅读,更多相关《数据结构B试题及答案.docx(15页珍藏版)》请在冰豆网上搜索。
数据结构B试题及答案
一、 单项选择题(2分×10=20分)
1.若某线性表中最常用的操作是提取第i个元素及找第i个元素的前驱元素,则采用(D)存储方式最省时间。
A.单链表B.双链表C.单向循环链表D.顺序表
2.将含有100个结点的完全二叉树从根开始自上向下,每层从左到右依次编号,且设根结点的编号为1,则编号69的结点的双亲的编号为(A)。
A.34B.35C.33D.无法确定
3.单循环链表的主要优点是(D)。
A. 不再需要头指针了
B. 已知某结点的位置后,很容易找到其前驱
C. 在进行插入、删除运算时,能更好地保证链表不断开
D. 从表中任一结点出发都能扫描到整个链表
4.在长为n的顺序表中,向第i个元素(1≤i≤n+1)前插入一个元素需要向后移动(B)个元素。
A.n-iB.n-i+1C.n-i-1D.i
5.一个栈的入栈顺序是1、2、3、4、5,则此栈不可能的输出顺序为(C)。
A.5、4、3、2、1B.4、5、3、2、1
C.4、3、5、1、2D.1、2、3、4、5
6.串是一种特殊的线性表,其特殊性表现在(B)。
A.可以顺序存储B.数据元素是一个字符
C可以链式存储D.数据元素是多个字符
7.一棵5层满二叉树中,结点总数为(C)个。
A.33B.32C.31D.30
8.下列4棵二叉树,(B)是平衡树。
A.B.C.D.
9.n个顶点的无向图中最多有(A)条边。
A.n(n-1)/2B.n(n-1)C.n(n+1)D.n(n+1)/2
10.6个顶点的无向图中,至少有(A)条边才能保证是一个连通图。
A.5B.6C.7D.8
二、
判断题(1分×10=10分)
(F)1.线性结构的基本特征是:
每个结点有且仅有一个直接前驱和一个直接后继。
(F)2.二叉树是树的特殊情形。
(T)3.存在这样的二叉树,其先序遍历与中序遍历得到的访问序列相同。
(F)4.用一维数组存储二叉树时,总是以先序遍历的顺序存储结点。
(F)5.空串就是由空格组成的串。
(F)6.在AOE网中,一定只有一条关键路径。
(T)7.m阶B-树每一个结点的子树个数都小于或等于m.
(T)8.插入排序是稳定的。
(T)9.顺序存储的线性表可以实现随机存取。
(F)10.二叉树按某种顺序线索化后,任一结点均有指向其直接前驱和直接后继的线索。
三、填空题(2分×8=16分)
1.在单链表中,若要在指针p所指结点后插入指针s所指结点,则需要执行下列两条语句:
s->next=p->next;p->next=s;
2. 在有头结点的单链表L中,指针p所指结点是第一个结点的条件是
p=L->next。
3.栈是一种受限制的线性表,也叫LIFO结构,LIFO的含义是后进先出。
4.对于队,只能在队尾插入元素,只能在队头删除元素。
5.抽象数据类型ADT可以用三元组(D,S,P)表示,它们分别表示:
数据对象、数据关系和基本操作。
四、简答和应用题(38分)
1.(8分)某二叉树先序遍历的结果是ABCDEFG,中序遍历的结果是CBDAFGE.
(1) 画出此二叉树;
(2) 写出其后先序遍历的结果。
A
BE
CDF
G(5分)
CDBGFEA(3分)
2.(9分)已知如图所示有向图,
(1) 求各点的入度和出度;
(2) 给出该图的邻接矩阵;
(3) 给出该图的邻接表。
(1)1:
0,32:
2,13:
3,04:
1,15:
1,2
(3) 01→1→3→4^
12→2^
23^
34→2^
45→1→2^
(2)01011
00100
00000
00100
01100
(各3分)
3.给出下面稀疏矩阵的三元组。
(5分)
5行6列:
(1,2,12),(2,1,9),(4,1,-1),(4,5,10),(5,4,11)(5分)
4.(8分)已知序列5,3,4,8,6。
(1) 以该序列为权构造一棵有5个叶子结点的Huffman树。
(2) 求上边构造的Huffman树的带权路径长度WPL.
26
1511
7856
34(6分)
WPL=(3+4)*3+(8+5+6)*2=21+38=59(2分)
5.(8分)已知如图所示的AOE网。
(1) 求每项活动的最早开始时间e(ai)和最迟时间l(ai);
(2)
V1
V2
V4
V5
V6
a1=3
a3=2
a5=4
a4=3
a6=1
a7=2
求其关键路径。
V3
a2=2
a8=3
(见最后)
vevlell-e
v100a1011
v234a2000
v322a3341
v466a4341
v567a5220
v688a6671
a7660
a8253
(2分)(4分)
a2a5a7
关键路径:
v1→v3→v4→v6(2分)
五、设计题(16分)
1. 编写实现“起泡排序”的子函数,入口参数是整形数组L[]和数组长度n.
voidsort(intL[],intn)
{inti,j,t;
for(i=n;i>1;i--)
for(j=1;j
{if(L[j]>=L[j+1]){t=L[j];L[j]=l[j+1],l[j+1]=t;}
2. 写出先序遍历二叉树的子函数,入口参数是其根结点指针BiTree型指针T,其中BiTree定义为:
typedefstructBiTNode{
chardata;
structBiTNode*LChild,*RChild;
}BiTNode,*BiTree;
voidPreOrderTran(BiTreeT)
{if(!
T){
printf(“%c”,T->data);
PreOrderTran(T->Lchild);
PreOrderTran(T->Rchild);
}
一、 选择题(每小题1分,共20分)
1.以下数据结构中,a是线性结构。
A)栈B)树C)二叉树D)图
2.在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是a。
A、选择排序B、冒泡排序C、插入排序D、希尔排序
3.下面c是顺序存储结构的优点。
A)存储密度大B)插入运算方便C)查找方便D)适合各种逻辑结构的存储表示
4.用链式方式存储的队列,在进行插入运算时,b。
A)仅修改头指针B)仅修改尾指针
C)头、尾指针都要修改D)头、尾指针可能都要修改
5.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为a排序法。
A)插入 B)选择 C)冒泡 D)都不是
6.二叉树的先序遍历和中序遍历如下,则该二叉树右子树的树根是c。
先序序列:
EFHIGJK中序序列:
HFIEJKG
A)EB)FC)GD)H
7.下面a方法可以判断出一个有向图中是否有环。
A)深度优先遍历 B)拓朴排序 C)求最短路径 D)求关键路径
8.下面关于串的叙述中,b是不正确的。
A)串是字符的有限序列B)空串是由空格构成的串
C)模式匹配是串的一种重要运算D)串既可以采用顺序存储,也可以采用链式存储
9.b的邻接矩阵是对称矩阵。
A)有向图B)无向图C)AOV网D)AOE网
10.若在线性表中采用折半查找法查找元素,该线性表应该c。
A)元素按值有序 B)采用顺序存储结构
C)元素按值有序,且采用顺序存储结构 D)元素按值有序,且采用链式存储结构
11.在一个长度为n的顺序存储的线性表中,向第i个元素(1≤i≤n+1)插入一个新元素时,需要从后向前依次后移c个元素。
A、n-iB、n-i-1C、n-i+1D、i
12.一个栈的入栈序列是12345,则栈的不可能的输出序列是b。
A、23415B、54132C、23145D、15432
13.从邻接矩阵可以看出,该图共有b顶点。
A、9B、3C、6D、1
14.上题中,若是无向图,则有d条边。
A、5B、4C、3D、2
15.n个节点的完全二叉树,编号为i的节点是叶子结点的条件是d。
A、inD、2*i>n
16.向一个有128个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动b
个元素。
A、64.5B、64C、63D、65
17.5个顶点的有向图最多有b条弧。
A、5B、20C、30D、25
18.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行d。
A、q->next=p->next;p->next=q;B、p->next=q->next;q=p;
C、p->next=p->next;q->next=q;D、p->next=q->next;q->nxet=p;
19.对一个满二叉树,m个树叶,n个结点,深度为h,则有d。
A、n=h+mB、h+m=2n
C、m=h-1D、n=2h-1
20.假定一个链队的队首和队尾指针分别为front和rear,则判断队空的条件为d。
A、front==rearB、front!
=NULL
C、rear!
=NULLD、front==NULL
二、判断题:
(判断下列各题正误,正确的在题目后面的括号内写“对”,错误的在题目后面的括号内写“错”。
每小题2分,共10分)
(t)1.含尾指针的单链循环表可以被用于队列操作。
(f)2.栈和队列都不是线性数据结构。
(t)3.数据项是数据的最小单位。
(t)4.数据结构包含数据的逻辑结构、数据的存储结构以及数据集合上定义的运算。
(f)5.完全二叉树不可以用顺序存储结构进行存储。
三、填空题(每空2分,共10分)
1、对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为,在表尾插入元素的时间复杂度为。
2、队列的插入操作在进行,栈的删除操作在进行。
3、设字符串S1=‘ABCDEFG’,S2=‘PQRST’,则运算S=CONCAT(SUB(S1,2,LEN(S2)),SUB(S1,LEN(S2),2))后的串值为。
四、回答下列问题(每小题8分,共40分)
1. 分别给出对下图进行深度优先和广度优先遍历的结果。
2
5
4
1
3
6
8
9
7
2.已知序列(12,4,17,10,7,30),用冒泡排序法对其进行递增排序,写出每一趟的排序结果。
3.一批数据有如下的逻辑结构B=(K,R),其中
K={},R={r},r={},
试用图示法表示其逻辑结构。
4.已知字符:
C1,C2,C3,C4,C5,C6的权分别为:
17,5,16,4,8,11,请构造相应的赫夫曼树,并给出相应字符的赫夫曼编码。
5.已知如下图所示二叉树,分别写出其前序、中序和后序序列。
A(5题图)
BC
DEF
五、编写算法(每小题10分,共20分)
要求:
1、说明算法中使用的主要数据结构、变量;2、用C
1.设有一个无头结点的单链表,编写子程序(或函数)统计其结点个数。
2.设有一向量A=(a1,a2,…an-1,an),试设计一个算法,将向量逆置,即令元素排列次序颠倒,成为逆向量A’=(an,an-1,…a2,a1)。
要求逆向量仍占用原向量的空间,并且用单链表表示,写出其处理过程(14分)。
即由
a1
a2
……
an
^
head
变为
an
an-1
……
a1
^
head
《数据结构》试题B参考答案
三、填空题(每空2分,共10分)
1、O(n)、O
(1)2、队尾、栈顶3、BCDEFEF
四、回答下列问题(每小题8分,共40分)
1.深度:
125963784(不唯一)
广度:
123456789(不唯一)
2.第1趟:
4121071730
第2趟:
4107121730
第3趟:
4710121730
第4趟:
4710121730
3.
2
5
4
1
3
6
8
9
7
4.
c1:
10
c2:
1111
c3:
01
c4:
1110
c5:
110
c6:
00
5.前序:
ABDECF中序:
DBEACF后序:
DEBFCA
五、编写算法(每小题10分,共20分)(C语言结果)
1.
strucnode{
intd;
structnode*next;
}
intcountn(node*p)
{intn=0;
while(p){n++;p=p->next;}
RETURN(n);
}
2.
strucnode{
intd;
structnode*next;
}
voidinvert(node*head)
{node*p,*q,*r;
p=head->next;
q=NULL;
while(p!
=NULL)
{r=p->next;p->next=q;
q=p;p=r;
}
head=q;
}