数据结构题库汇总

数据结构题库汇总
数据结构题库汇总

数据结构习题

习题一

一、选择题

1、算法分析的两个主要方面是:()

A.正确性和简明性B.时间复杂度和空间复杂度

C.数据复杂性和程序复杂性D.可读性和文档性

2、在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构

C.线性结构和非线性结构 D.逻辑结构和存储结构

3、计算机算法具备输入、输出和()等5个特性:

A.有穷性、确定性和稳定性B.可行性、可移植性和可扩充性 C.有穷性、确定性和可行性D.易读性、稳定性和安全性

4、算法分析的目的是()。

A.找出算法的合理性 B.研究算法的输人与输出关系

C.分析算法的有效性以求改进 D.分析算法的易懂性

二、填空题

1、数据结构是一门研究非数值计算的程序设计问题中计算机的以及它们之间的和运算等的学科。

2、线性结构中元素之间存在的关系,树形结构中元素之间存在的关系,

图形结构中元素之间存在的关系。

3、________是数据不可分割的最小单元,是具有独立含义的最小标识单位。例如构成一个数据元素的字段、域、属性等都可称之为________。

4、数据的________指数据元素及其关系在计算机存储器内的表示。_________是逻辑结构在计算机里的实现,也称之为映像。

5、所谓算法(Algorithm)是对特定问题求解方法和步骤的一种描述,它是指令的一组__________,其中每个指令表示一个或多个操作。

三、问答题

1、用大O形式写出下面算法的时间复杂度:

i=0;

s=0;

while(s<n)

{ i++;

s+=i; }

2、写出以下算法的时间复杂度:

for(i=0; i<m; i++)

for(j=0 ; j<t; j++)

c[i][j]=0;

for(i=0;i<m;i++)

for(j=o; j

for(k=0;k<n;k++)

c[i][j]+=a[i][k]*b[k][j];

习题二

一、选择题

1.在一个长度为n的顺序表中删除第i个元素(0<i

A.n-i B.n-i+1 C.n-i+1 D.i+1

2.从一个具有n个元素的线性表中查找其值等于x的结点时,在查找成功的情况下,需平均比较( )个元素结点。

A.n/2 B.n C.(n-1)/2 D.(n +1)/2 3.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则下列存储方式最节省运算时间的是():

A.带头结点的双循环链表B.双链表

C.给出表头指针的单循环链表D.单链表

4.如果最常用的操作是取第i个结点及其前驱结点,那么下列存储方式最节省时间的是():

A.单链表B.单循环链表C.顺序表D.双链表

5.若某线性表最常用的操作是在最后一个结点之后插入一个结点或者删除最后一个结点,则下列存储方式最节省运算时间的是:()

A.仅有尾指针的单循环链表B.双链表

C.仅有头结点的单循环链表D.单链表

6.线性表是( )。

A.一个有限序列,可以为空 B.一个有限序列,不可以为空

C.一个无限序列,可以为空 D.一个无限序列,不可以为空

7.在一个长度为n的顺序表中,向第i个元素(0一1<n+1)之前捕人一个新元素时,需要向后移动( )个元素。

A.n-i B.n-i+1 C.n-i-1 D.i+1

8.一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是()。

A.98 B.100 C.102 D.106

9. 在以下叙述中,正确的是:()

A.线性表的线性存储结构优于链式存储结构

B.栈的操作方式是先进先出

C.队列的操作方式是先进后出

D.二维数组是其数据元素为线性表的线性表

二、填空题

1.线性表是具有n个的有限序列。

2.在单链表中,要删除某一个指定的结点,必须找到该结点的结点。

3.向一个长度为n的顺序表中的第i个数据元素(1≤i≤n)之前插入一个元素时,需要向后移动个数据元素。

4.在双向链表中,每个结点都具有两个指针域,一个指向,另一个指

向。

5.线性表中有且仅有一个开始结点,表中有且仅有一个终端结点,除开始结点外,其他每个元素有巨仅有一个__________,除终端结点外,其他每个元素有且仅有一个______。

6.线性表的链式存储结构的每一个结点(Node)需要包括两个部分:一部分用来存放元素的数据信息,称为结点的_________;另一部分用来存放元素的指向直接后继元素的指针(即直接后继元素的地址信息),称为________或____________。

7.写出带头结点的双向循环链表L为空表的条件________________。

三、问答题

1.对链表设置头结点的作用是什么?(至少说出两条好处)

2.在单链表、双链表中,如果仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?

3.如果频繁地对一个线性表进行插入和删除操作,那么该线性表应该采用何种存储结构?为什么?

四、程序设计题

1.有一个带头结点的单链表(不同结点的数据域值可能相同),其头指针为head,编写一个函数计算数据域值为x的结点个数。

2.设计一个算法,删除一个递增的单链表(允许出现值域重复的结点)中多余的元素值相同的结点。

3.设计一个删除单链表L中值为m的结点的直接前驱结点操作的算法。

4.设计一个算法,将一个不带头结点的单链表L(至少有一个结点)逆置,即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。

5.在一个带头结点的单链表中,头指针为head,它的数据域的类型为整型,而且按由小到大的顺序排列,编写一个算法insertx_list(),在该链表中插人值为x的元素,并使该链表仍然有序。

习题三

一、选择题

l.一个栈的序列是:a,b,c,d,e,则栈的不可能输出的序列是()。

A.a,b,c,d,e B.d,e,c,b,a C.d,c,e,a,b D.e,d,c,b,a 2.判定一个栈S(最多元素为MaxSize)为栈满的条件是:()

A.S—﹥top!= -1 B.S—﹥top==-1

C.S—﹥top==MaxSize-1 D.S—﹥top!=MaxSize-1

3.若一进栈序列为1,2,3…,n,其出栈序列为P1,P2,P3,…P n,如果P n=n,则P i (1≤i

A.i B.n-i+1 C.不确定D.n-i

4.在一个链队中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算是()A.r->next=s;r=s;B.r->next=s;f=s;

C.s->next=r;r=s;D.s->next=f;f=s;

5.若用一个大小为8的一维数组来实现循环队列,且当前front和rear的值分别为4和1,当从队列中删除一个元素,再加入两个元素后,front和rear的值分别是():A.3和5 B.5和3 C.2和6 D.6和2

6.判断一个循环队列Q(最多元素为MaxSize)为空的条件是:()

A.Q->front==Q->rear B.Q->front==(Q->rear +1)%MaxSize

C.Q->front!=Q->rear D.Q->front!=(Q->rear +1)%MaxSize

7.向一个带头结点、栈顶指针为top的链栈中插人一个*S结点的时候,应当执行语句()。

A.top->next=S; B.S->next=top;top=S;

C.S->next=top->next;top->next=S; D.S->next=top;top=S->next;

8.在一个链队列中,假定front和rear分别为头指针和尾指针,则插入一个结点*S 的操作是()。

A.front=front->next B.S->next=rear;rear=S

C.rear->next=S;rear=S D.S->next=front;front=S

9.栈与队列都是()。

A.链式存储的线性结构 B.链式存储的非线性结构

C.限制存取点的线性结构 D.限制存取点的非线性结构

10.若进栈序列为l,2,3,4,则()不可能是一个出栈序列。

A.3,2,4,1 B.l,2,3,4 C.4,2,3,1 D.4,3,2,l

11.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写人该缓冲区,而打印机则从该缓冲区中取走数据打印。该缓冲区应该是一个()结构。

A.堆栈 B.队列 C.数组 D.线性表

二、填空题

1.栈和队列的共同点是。

2.通常元素进栈的操作是。

3.栈(stack)是限定在________一端进行插人或删除操作的线性表。在栈中,允许插

人和删除操作的一端称为__________,而另一端称为_________。不含元素的栈称为_______。

4.队列(Queue)也是一种___________,但它与栈不同,队列中所有的插人均限定在表的一端进行,而所有的删除则限定在表的另一端进行。允许插人的一端称为_________,允许删除的一端称为_______________。

5.队列中允许进行删除的一端称为_______________;允许进行插入的一端称为_________。

三、问答题

1.设有一个数列的输入顺序为abcdef,若采用栈结构,并以I和O分别表示进栈和出栈操作,试问下列输出序列是否是合法序列?如是,请用进栈和出栈操作表示其合法序列。(1)能否得到输出顺序为cbefda的序列?

(2)能否得到输出顺序为aedfbc154623的序列?

2.设输入元素为4、5、6、B、A,入栈次序为456BA,元素经过栈后到达输出序列,当所有元素均到达输出序列后,有哪些序列可以作为高级语言的变量名?

3.假设Q[0…10]是一个线性队列,初始状态为front=rear=0,画出做完下列操作后队列的头尾指针的状态变化情况,若不能入队,请指出其元素,并说明理由。

(1)d,e,b,g,h入队

(2)d,e出队

(3)i,j,k,l,m入队

(4)b 出队

(5)n,o,p入队

4.设有4个元素A、B、C和D进栈,给出它们所有可能的出栈秩序。

四、程序设计题

1.假设表达式中有三种括号:圆括号“()”、方括号“[ ]”和花括号“{ }”用C语言编写程序判断读人的表达式中不同括号是否正确配对,假定读人的表达式以”#”结束。

一、选择项

4.设有两个串求串S2在S1,那么求串S2在S1求串n在串m中首次出现的位置的运算称为:()

A.求子串B.求串长C.模式匹配 D.串连接

4.设有串S=‘Computer’,则其子串的数目是()。

A.36 B.37 C.8 D.9

4.下列是C语言中“ASDF567HJKL”子串的是:()

A.ASDF B.DF56 C.“F567HJ”D.“DFHJ”

5.空串与空格串()。

A.相同 B.不相同 C.可能相同 D.无法确定

二、境空题

1.串是由零个或多个字符组成的____________。通常记作:s=“c1,c2,…,cn”(n=>0),其中,S称为________;串中的Ci(1<=i<=n)可以是字母、数字字格或其他字符。用双引号括起来的部分是_________.即串S的内容。

2.串中字符的个数称为串的________。

3.不含有任何字符的串称为_________,它的长度为___________。

4.由一个或多个空格构成的串称为____________,它的长度为___________。

5.串中任意多个连续字符组成的子序列称为该串的____________;包含___________的串称为主串。

三、问答题

1、现有串s1=‘ABCD123’,s2=‘abcde’,假设函数con(x,y)返回x和y串的连接串,函数subs(s,i,j) 返回串s的从序号i的字符开始的j个字符组成的子串,函数len(s)返回串s的长度,求:

(1)L1=subs(s1,2,len(s2))

(2)L2=subs(s1,len(s2),2))

(3)con(L1,L2)

四、程序设计题

l.编写算法实现将窜S1中的第 i个字符到第 j个字符之间的字符(不包括第 i个字符和第j个字符)之间的字符用串S2替换。假设串的存储结构为:

#define MAXSIZE 81

struct string{

int len;

char ch[MAXSIZE];

}stringtype;

一、选择题

l.数组常用的两种基本操作是()。

A.建立与查找 B.删除与查找 C.插人与索引 D.查找与修改2.对稀疏矩阵进行压缩存储,常用的两种方法是()。

A.二元组和散列表 B.三元组和十字铸表

C.三角矩阵和对角矩阵 D.对角矩阵和十字链表

3.数组A中,每个数据元素的长度为2个字节,行下标m从1到10,列下标n从1到8,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数是:()A.20 B.80 C.240 D.160

4.数组A中,每个数据元素的长度为3个字节,行下标m从1到8,列下标n从1到10,从首地址SA开始连续存放在存储器内,该数组按行存储时,元素A[8][3]的起始地址是:()

A.SA+222 B.SA+141 C.SA+44 D.SA+219

5.若广义表L满足Head(L)= Tail(L),则广义表L为:()

A.(())B.()C.((),())D.((),(),())

6.广义表((a))的表头是()。

A.() B.a C.(a) D.((a))7.广义表((a))的表尾是()。

A.() B.a C.(a) D.((a))8.广义表((a),a)的表头是()。

A.() B.a C.(a) D.((a))9.广义表((a),a)的表尾是()。

A.( ) B.a C.(a) D.((a))10.广义表(a,b,c)的表头是()。

A.a B.(a) C.a,b D.(a,b)11.广义表(a,b,c)的表尾是()。

A.b,c B.(b,c) C.a.b,c D.(a,b,c)

二、填空题

9. head(((),()))是,tail(((),()))是,表的长度是。

10. head(((a),((b),c),(((d)))))是,tail(((a),((b),c),(((d)))))是。

11.现有广义表L=((a),((b),c),d,e,((i,j),k)),则该广义表的长度是,深度是。

1.数组(array)是n(n>1)个__________的有序组合,数组中的数据是按顺序存储在一块______________的存储单元中。

2.数组中的每一个数据通常称为_____,________用下标区分,其中下标的个数由数组的________________决定。

3.广义表是n(n>=0)个元素的序列。记作:A=(a1,a2,…,a n),其中,A是广义表的_________,n是它的_________,当n=0的时候称为____________。

4.广义表的深度一般定义为广义表元素_________,或者说是广义表___________。利

用递归的定义,广义表的深度就是所有子表中_________________________。

三、问答题

1.现有一个稀疏矩阵如下图所示,写出其对应的三元组表示,并求出其转置矩阵的三元组表示。

2.写一个创建稀疏矩阵相应三元组的算法。

四、程序设计题

1.假设三元组元素值为整型,写一个查找三元组元素值为n 的算法。

0200003010040000????-????????

习题六

一、选择题

1.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含节点数至少有:()

A.2h B.2h+1 C.h+1 D.2h-1

2.现有一二叉树,若其先序遍历序列为ABCDE,中序遍历序列为CBDAE,那么其后序遍历序列为:()

A.BDAEC B.EDCBA C.DABEC D.CDBEA

3.在线索化二叉树中,t所指结点没有左子树的充要条件是:()

A.t->left==NULL B.t->left==0

C.t->ltag==1 D.t->left==NULL且 t->ltag==1

4.设深度为h的二叉树上只有叶子结点和同时具有左右子树的结点,则此类二叉树中所包含的结点数目至少为()。

A.2h B.2h C.2h+1 D.2h-l

5.二叉村第k层上最多有()个结点。

A.2k B.2k-1 C.2k-1 D.2k-1

6.二叉树的深度为k,则二叉树最多有()个结点。

A.2k B.2k-1 C.2k-1 D.2k -1

7.设某一二叉树先序遍历为abdec,中序遍历为dbeac,则该二叉树后序遍历的顺序是()。

A.abdec B.debac C.debca D.abedc

8.设某一二叉树中序遍历为badce,后序遍历为bdeca,则该三叉树先序遍历的顺序是()。

A.adbec B.decab C.debac D.abode

9.N个结点的线索二叉树中,线索的数目是()。

A.N-1 B.N+1 C.2N D.2N-1

10.将一棵树T转换为一棵二叉树T2,则T的先序遍历是T2的()。

A.先序 B.中序 C.后序 D.无法确定

11.将一棵树T转换为一棵二叉树T2,则T的后序遍历是T2的()。

A.先序 B.中序 C.后序 D.无法碉定

12.设一棵二叉树度2的结点数是7,度为1的结点数是6,则叶子结点数是()。

A.6 B.7 C.8 D.9

13.一棵非空的二叉树,先序遍历与后序遍历正好相反,则该二叉树满足()。

A.无左孩子 B.无右孩子

C.只有一个叶子结点 D.任意二叉树

14.线索二叉树是一种()。

A.逻辑结构 B.线性结构

C.逻辑和线性结构 D.物理结构

15.权值为{l,2,6,8}的四个结点构成的哈夫曼树的带权路径长度是()。

A.29 B.31 C.17 D.20

二、填空题

1.树(Tree)是n(n≥0)个结点的_____________集。

2.深度为5的二叉树至多有个结点。

3.树中任意结点允许有零个或多个孩子结点,除根结点以外,其余结点双亲结点。

4.在一棵二叉树中,度为零的结点个数为n0,度为2的结点个数为n2,那么n0= 。

5.结点的度是指结点所拥有的________________。

6.一个结点的子树中的任一结点都称为该结点的___________________。

7.从根到该结点所经分支上的所有结点称为该结点的_______________。

8.具有_______________________的结点互称为兄弟结点,简称为兄弟。

9.从根结点开始定义,根为________层,根的孩子为__________层,依次往下类推,若某结点在第k层,则其子树的根就在_________________层。

10.如果树中各结点的各子树无排列顺序,即可以互换位置,则称为该树为_________。 11.二又树(Binary Tree)是结点的有限集合,这个集合或者是空,或者是由一个根结点和__________的称为______________和____________的二叉树构成。

12.二叉树第i层上最多有____________个结点。

13.深度为k的二又树最多有____________个结点(k≥l)。

14.在任意二叉树中,叶子结点的数目(即度为0的结点数)等于度为2的结点数____________。

15.一棵深度为k且具有2k-1个结点的二叉树称为__________。这类二叉树的特点是,二叉树中每一层结点的个数都是______________的个数。

16._________是那种在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者所缺少的结点都在右边。

17.具有n个结点的完全二叉树的深度是_______________。

18.先序遍历二叉树的操作定义为:若二叉树为空,则为空操作;否则进行如下操作:访问二叉树____________;先序遍历二叉树____________;先序遍历二叉树_________。

19.中序遍历二叉树的操作定义为:若二叉树为空,则为空操作;否则进行如下操作:中序遍历二叉树__________;访问二又树__________;中序遍历二又树____________。

20.后序遍历二叉树的操作定义为:若二叉树为空,则为空操作;否则进行如下操作:后序遍历二叉树___________;后序遍历二叉树_________;访问二叉树_____________。

21.线索二叉树(Threaded Binary Tree)是充分利用二义链表的 n+1个空的指针域作为线索来标志每一个结点的________和__________信息。当某个结点有左孩子的时候,使其___________指向其左孩子,无左孩子的时候,使其左指针域指向该结点的___________;当某个结点有有孩子的时候,使其右指针域指向该结点的__________,无右孩子的时候,使其有指针域指向该结点的_____________。

22.线索二叉树的线索链表中,指向结点前驱和后继的指针称为___________;加上线索的二叉树称为_____________;对二叉树以某种次序进行遍历使其成为线索二叉树的过程称为_______________________。

23.哈夫曼树(Huffman Tree)又称___________。它是n个带权叶子结点构成的所有二叉树中,带权路径长度WPL__________________。

三、问答题

1.一棵树表达成如下形式:

D={A,B,C,D,E,F,G, H,I,J,K,L,M,N,O}

R=<A,B>,<A,C>,<A,D>,<B,E>,<B,F>,<C,G>,<D,H>,<D,I>,<D,J>,<K,F>,<K,L>,<F,M>,<I,N>,<I,O>}其中D为结点集合,R为边的集合。请根据以上内容回答以下问题:

(1) 画出这棵树。

(2) 该树的根结点是哪一个?

(3) 哪些是叶子结点?

(4) F结点的双亲是谁?

(5) F结点的祖先是哪些?

(6) F结点的孩子是哪些?

(7) F结点的兄弟是哪些?

(8) F结点的堂兄弟是哪些?

(9) F结点的度是多少?

(10)F结点的层次是多少?

(11)D结点的子孙有哪些?

(12) 以结点D为根的子树度是多少?

(13) 以结点D为根的子树层是多少?

(14) 该树的层是多少?

(15) 该树的度是多少?

2.画出图6-1中树的二叉树表示形式。

(a)(b)(c)

图6-l

3.已知某二叉树的先序遍历的结果是:A,B,D,QC,E,H,L,I,K,M,F和J,它的中序遍历的结果是:QD,B,A,L,H,E,K,LM,C,F和J,请画出这棵二叉树,并且写出该二叉树后序通历的结果。

4.设A、B、C、D、E、F六个字母出现的概率分别为7,19,2,6,32,3,构建哈夫曼树(请按左子树根结点的权小于等于右子树根结点的权的次序构造),计算出带权路径长度WPL,并设计每个字母的哈夫曼编码

5.假设一棵二叉树的后序序列为DCEGBFHKJIA,中序序列为DCBGEAHFIJK,请完成下列操作:(1)画出该二叉树;(2)写出该二叉树的先序遍历序列;(3)画出该二叉树的中序遍历线索二叉树。

6.假设一棵二叉树的先序序列为ABDGCEHLIKMFJ,中序序列为GDBALHEKIMCFJ,请完成下列操作。

(1)画出该二叉树;

(2)写出该二叉树的后序遍历序列;

(3)画出该二叉树的中序遍历线索二叉树。

7.假设通讯电文中只用到A,B,C,D,E,F六个字母,它们在电文中出现的相对频率分别为:7,2,15,9,4,19,要求画出哈夫曼树(请按左子树根结点的权小于等于右子树根结点的权的次序构造),并计算出带权路径长度WPL,试设计每个字母的哈夫曼编码。

8.有七个带权结点,其权值分别为2,6,7,1,5,9,13,试以它们为叶子结点构造一棵哈夫

曼树(请按照每个结点的左子树根结点的权小于等于右子树根结点的权的次序构造),并计算出带权路径长度WPL。

9.假设一棵哈夫曼树共有n0个叶子结点,试证明树中共有2n o-l个结点。

10.假设通信用的报文由9个字母A、B、C、D、E、F、G、H和I构成,它们出现的频率分别是:10、20、5、15、8、2、3、7和30。请用这9个字母出现得频率作为权值求:(l)设计一棵哈夫曼树。

(2)计算其带权路径长度WPL值。

(3)写出每个字符的哈夫曼编码。

四、程序设计题

1. 自己设计一棵二叉树,编写一个完整的程序,输出该二叉树的先序、中序和后序序列。(程序中应包括二叉树的生成函数,先序、中序、后序遍历函数)。

2.已知一棵二叉树的先序遍历序列和中序遍历序列,请写出根据二又树先序遍历序列和中序遍历序列构造一棵二叉树的算法。

习题七

一、选择题

1.在一个无向图G中,所有顶点的度数之和等于所有边数之和的()倍。

A.l/2 B.1 C.2 D.4

2.对某个无向图的邻接矩阵来说:()

A.第i行上的非零元素的个数和第i列上的非零元素的个数一定相等

B.矩阵中的非零元素的个数等于图中的边数

C.第i行上、第i列上非零元素的总数等于顶点Vi的度数

D.矩阵中非全零行的行数等于图中的顶点数

3.采用邻接表存储的图的深度优先遍历算法类似于二叉树的:()

A.先序遍历 B.中序遍历 C.后序遍历 D.按层遍历

4.在一个具有n个顶点的无向图中,要连通全部顶点至少需要条边:()A.n-1 B.n C.n+1 D.n/2

5.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。

A.l/2 B.1 C.2 D.4

6.一个具有n个顶点的无向图包含()条边。

A.n B.n+1 C.n-1 D.n/2

7.一个具有n个顶点的无向完全图包含()条边。

A.n(n-l) B.n(n+l) C.n(n-l)/2 D.n(n-l)/2

8. 一个具有n个顶点的有向完全图包含()条边。

A.n(n-1) B.n(n+l) C.n(n-l)/2 D.n(n+l)/2

9.无向图的邻接矩阵是一个()。

A.对称矩阵 B.零矩阵 C.上三角矩阵 D.对角矩阵

二、填空题

1.在图中,任何两个数据元素之间都可能存在关系,因此图的数据元素之间是一种________________的关系。

2.在有n个顶点的有向图中,至多有条边。

3.具有10个顶点的无向图,边的总数最多为。

4.在一个具有n个顶点的无向图中,要连通全部顶点至少需要条边。

5.具有n (n-1)/2条边的无向图称为__________,简称为_________,其中n表示无向图中顶点的个数,n(n-1)/2是具有n个顶点无向图所拥有边的___________。

6.具有n个顶点的有向图,如果它同时具有n(n-1)条弧,则称该图为____________,其中n(n-1)是具有n个顶点有向图所拥有弧的___________________。

7.如果图中的边或弧带有权,则称这种图为_______________。

8.顶点v的度定义为_________________的数目,记为D(v)。

9.在有向图中,顶点v的度又分为_____________和_________,__________是以顶点v为头的弧的数目,或者说是以该顶点为终点的边的数目,记为ID(v);____________是以顶点v为尾的弧的数目,或者说是以顶点为起点的边的数目,记为OD(v);顶点v的度是它的___________和__________之和,即D(v)=ID(v)+OD(v)。

10.____________是指一条路径上所经过的边或弧的数目。

11.若一条路径上除开始结点和结束结点外(开始结点和结束结点也可以为不同顶点),

其余顶点均不相同,则称该路径为_____________。

12.若一条路径上的开始结点和结束结点为同一个顶点,则称该路径为________或_______。同时除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路称_________或__________。

13.一个____________称为有向无环图,简称为DAG图。

三、问答题

1.已知一个无向图的邻接矩阵如图所示,请画出该无向图,并写出从顶点0出发分别进行深度优先和广度优先搜索遍历得到的顶点序列。

2.依据以下无向图,使用普里姆算法,写出构造该图的最小生成树的过程。

3.请使用克鲁斯卡尔算法,画出构造下图G的最小生成树的过程

一个无向图G

习题九

一、选择题

1.顺序查找方法适合于存储结构为()的线性表

A.散列存储

B.索引存储

C.散列存储或索引存储

D.顺序存储或链接存储

2.采用折半查找法查找长度为n的线性表时,每个元素的平均查找长度为:()A.O(n2) B.O(n log2n) C.O(n) D.O(log2n)

3.对线性表进行折半查找时要求线性表必须:()

A.以顺序方式存储 B.以顺序方式存储,且结点按关键字有序排序

C.以链式方式存储 D.以链式方式存储,且结点按关键字有序排序

4.可以在哈希查找过程中处理冲突的方法是:()

A.关键字比较法 B.线性探查法C.数字分析法D.除留余数法

5.己知一个有序表为(11,22,33,44,55,66,77, 88,99), 则折半查找元素55需要比较( )次。

A.1

B.2

C.3

D.4

6.顺序查找法与二分查找法对存储结构的要求是( ) 。

A. 顺序查找与二分查找均只是适用于顺序表

B. 顺序查找与二分查找均既适用于顺序表 , 也适用于链表

C. 顺序查找只是适用于顺序表

D. 二分查找适用于顺序表

二、填空题

1. 折半查找( Binary Search)又称为,是一种效率较高的一种查找算法。

2. 分块查找(Blocking Search)又称为,是一种以的形式来来进行的查找方法。分块查找是的一种改进,它是一种介于和折半查找之间的查找方法。

3. 如果对查找表只进行查询某个"特定的"数据元素是否在查找表中, 以及查找某"特定的"数据元素的各种属性两种类型的基本操作,而不进行插入和删除数据元素的查找表称为。

4. 如果在查找表中进行查找的过程中,同时插入查找表中不存在的数据元素,或者查找表中删除已存在的某个数据元素,则称此类查找表为。

5. 用折半法查找一个线性表时,该线性表必须具有的特点是。

6. 在一个查找表中,能够惟一的标识一个数据元素(或记录)的关键字称为。

7. 二叉排序树(Binary Sort Tree),又称为,它或者是一棵空树,或者是具有下列性质的一棵二叉树:

(1) 若左子树不空,则左子树上所有结点的值。

(2) 若右子树不空,则右子树上所有结点的值。

(3) 左右子树又分别是。

8. 对有序表 (25,30,32,38,47,54,62,68,90,95) 用二分查找法查找32,则所需的比较次数为。

三、问答题

1.输入一个正整数序列{3,45,91,25,14,76,56,65},建立一棵二叉排序树,再从该树上删除结点76,请画出初始二叉排序树和删除结点后的二叉排序树。

2.关键字序列A=(36,27,68,33,97,40,81,24,23,90,32,14)共12个数据,哈希表长为

13,采用的哈希函数为:h (key) = key % 13。如果采用开放定址的线性探测再散列方法解决冲突,请构造哈希表并求其平均查找长度。

3.已知一个顺序存储的有序表为(17,25,33,37,47,53,59,65,73,77),试画出对应的折半查找判定树,并求其平均查找长度。

4.设有一组关键字{81,25,91,24,49,56,83,66},采用散列函数h(key)=key % 11,采用线性探查法解决冲突,试在0~10的散列地址空间中对该组关键字序列构造散列表,并求出在该散列表上进行查找的平均查找长度。

5.设散列表ht[0..12],既表的大小m=13。散列函数h(key)=key % 13,采用线性探查法解决冲突,试用关键字序列{15,21,57,7,6,18,40,27}建立散列表,并求出在该散列表上进行查找的平均查找长度。

四、程序设计题

1.设计一个算法,实现在二叉排序树中查找指定关键字的结点的非递归操作。

2.编写算法,用折半查找算法在一个有序的顺序表中插入 x 结点,并保持结点的有序性。

3. 写出二叉排序树的插入结点的递归算法,并利用插入算法写出建立一个有n个结点的二叉排序树算法。

习题十

一、选择题

1.在所有的排序方法中,关键字比较的次数与记录初始排列秩序无关的是()。

A.冒泡排序 B.希尔排序

C.直接选择排序 D.直接插人排序

2.一组记录的排序码(46,79,56,38,40,84),则利用堆排序(建立大根堆)的方法建立的初始堆为:()

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

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

3.设有5000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用:()

A.基数排序 B.快速排序 C.堆排序D.冒泡排序

4.从未排序序列中依次取出元素与已经排好序的序列中的元素作比较,将其放入已排序序列的正确位置上,此方法称为()。

A.插人排序 B.选择排序

C.交换排序 D.归并排序

5.依次将每两个相邻的有序表合并成一个有序表的排序方法称为()。

A.插人排序 B.交换排序

C.选择排序 D.归并排序

6.当两个元素出现逆序的时候就交换位置,这种排序方法称为()。

A.插人排序 B.交换排序

C.选择排序 D.归并排序

7.在正常情况下,直接插人排序的时间复杂度为()。

A.O(log2n) B.O(n)

C.O(n log2n) D.O(n2)

8.在正常情况下,冒泡排序的时间复杂度为()。

A.O(log2n) B.O(n)

C.O(nlog2n) D.O(n2)

9..堆排序算法时间复杂度为()。

A.O(log2n) B.O(n)

C.O(nlog2n) D.O(n2)

二、填空题

1.每次直接或通过基准元素间接比较两个元素,若出现逆序排列时就交换他们的位置,此种排序方法叫做排序;每次使两个相邻的有序表合并成一个有序表的排序方法叫做排序。

2.每次从无序子表中取出一个元素,把它插入到有序子表中的适当位置,此种排序方法叫做排序;每次从无序子表中挑选出一个最小或者最大元素,把它交换到有序表的一端,此种排序方法叫做排序。

3.假设对记录的次关键字进行排序,记录之中有两条记录Ri和Rj,它们的关键字Ki 和 Kj相等,在排序之前记录 Ri在 Rj之前,若排序之后记录 Ri仍在Rj之前,则称排序方法是___________; 相反,若经过某种排序之后 Ri在Rj之后,则称所用的排序方法是____________。

4.根据所排序过程中所用存储器的不同,可以将排序方法分为__________和

__________。

5.__________的基本思想是:每一趟将一个待排序的记录按其关键字的大小,插入到

已经排好序的部分记录之中,使之构成一个新的有序序列,直到所有记录全部插入完成,所

有待排记录的关键字都成为一个有序序列。

6.直接插人排序是一种__________.(填是否稳定)的排序算法。

7.冒泡排序是一种__________(填是否稳定)的排序算法。

8. 排序方法采用的是二分法的思想,排序方法其数据的组织采用完全

二叉树结构。

三、选择题

1、在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是__________.

A.希尔排序

B.冒泡排序

C.插入排序

D.选择排序

2、现有一组散列为{35,68,45,27,29,73},那么,采用堆排序(要求大根堆)的方法建

立的初始堆为__________.

A.68,35,45,27,29,73

B.73,68,45,27,29,35

C.73,68,45,35,29,27

D.73,45,68,29,35,27

3、假设有5000个无序的元素,希望用最快地速度挑出其中前10个最大的元素,最好

的排序方法为__________.

A.快速排序

B.冒泡排序

C.堆排序

D.基数排序

4、以下序列不是堆的是。

A.{100,85,98,77,80,60,82,40,20,10,66}

B.{100,98,85,82,80,77,66,60,40,20,10}

C.{10,20,40,60,66,77,80,82,85,98,100}

D.{100,85,40,77,80,60,66,98,82,10,20}

四、问答题

1、已知序列{17,18,60,40,7,32,73,65,85},请给出采用冒泡排序法对该序列做升序排

序时的每一趟的结果。

2、已知序列{10,18,4,3,6,12,1,9,18,8},请给出采用希尔排序法对该序列作升序排序

时的每一趟的结果。

五、算法设计题

1、编写直接插入排序的算法

2、编写选择排序的算法

相关主题
相关文档
最新文档