中国石油大学数据结构试题及答案.docx

上传人:b****7 文档编号:25646600 上传时间:2023-06-11 格式:DOCX 页数:21 大小:28.91KB
下载 相关 举报
中国石油大学数据结构试题及答案.docx_第1页
第1页 / 共21页
中国石油大学数据结构试题及答案.docx_第2页
第2页 / 共21页
中国石油大学数据结构试题及答案.docx_第3页
第3页 / 共21页
中国石油大学数据结构试题及答案.docx_第4页
第4页 / 共21页
中国石油大学数据结构试题及答案.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

中国石油大学数据结构试题及答案.docx

《中国石油大学数据结构试题及答案.docx》由会员分享,可在线阅读,更多相关《中国石油大学数据结构试题及答案.docx(21页珍藏版)》请在冰豆网上搜索。

中国石油大学数据结构试题及答案.docx

中国石油大学数据结构试题及答案

数据构造试题

一、单项选择题

1、在数据构造的讨论中把数据构造从逻辑上分为〔〕

A部构造与外部构造B静态构造与动态构造

C线性构造与非线性构造D紧凑构造与非紧凑构造。

2、采用线性链表表示一个向量时,要求占用的存储空间地址〔〕

A必须是连续的B局部地址必须是连续的

C一定是不连续的D可连续可不连续

3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为〔〕。

AnBn/2C(n-1)/2D(n+1)/2

4、在一个单链表中,假设q结点是p结点的前驱结点,假设在q与p之间插入结点s,那么执行〔〕。

As→link=p→link;p→link=s;

Bp→link=s;s→link=q;

Cp→link=s→link;s→link=p;

Dq→link=s;s→link=p;

5、如果想在4092个数据中只需要选择其中最小的5个,采用〔〕方法最好。

A起泡排序B堆排序C锦标赛排序D快速排序

6、设有两个串t和p,求p在t中首次出现的位置的运算叫做〔〕。

A求子串B模式匹配C串替换D串连接

7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。

所有数组元素相继存放于一个连续的存储空间中,那么存放该数组至少需要的存储字数是〔〕。

A80B100C240D270

8、将一个递归算法改为对应的非递归算法时,通常需要使用〔〕。

A栈B队列C循环队列D优先队列

9、一个队列的进队列顺序是1,2,3,4,那么出队列顺序为〔〕。

10、在循环队列中用数组A[0..m-1]存放队列元素,其队头和队尾指针分别为front和rear,那么当前队列中的元素个数是〔〕。

A(front-rear+1)%mB(rear-front+1)%m

C(front-rear+m)%mD(rear-front+m)%m

11、一个数组元素a[i]与〔〕的表示等价。

A*〔a+i〕Ba+iC*a+iD&a+i

12、假设需要利用形参直接访问实参,那么应把形参变量说明为〔〕参数。

A指针B引用C值D变量

13、下面程序段的时间复杂度为〔〕

for(inti=0;i

for(intj=0;j

a[i][j]=i*j;

AO(m2)BO(n2)CO(m*n)DO(m+n)

14、下面程序段的时间复杂度为〔〕

intf(unsignedintn){

if(n==0||n==1)return1;

elsereturnn*f(n-1);

}

AO

(1)BO(n)CO(n2)DO(n!

15、线性表假设是采用链式存储构造时,要求存中可用存储单元的地址()。

A必须是连续的

B 局部地址必须是连续的

C一定是不连续的

D 连续或不连续都可以

16、数据构造的定义为(D,S),其中D是()的集合。

A算法B数据元素C数据操作D逻辑构造

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

A   找出数据构造的合理性

B   研究算法中输入和输出的关系

C   分析算法的效率以求改良

D  分析算法的易懂性和文档性

18、在一个单链表中,假设p所指结点不是最后结点,在p之后插入s所指结点,那么执行()。

As->link=p;p->link=s;

Bs->link=p->link;p->link=s;

Cs->link=p->link;p=s;

Dp->link=s;s->link=p;

19、设单链表中结点构造为(data,link).指针q所指结点是指针p所指结点的直接前驱,假设在*q 与*p之间插入结点*s,那么应执行以下哪一个操作〔〕

As->link=p->link;p->link=s;Bq->link=s;s->link=p

Cp->link=s->link;s->link=p;Dp->link=s;s->link=q;

20、设单链表中结点构造为(data,link).假设想摘除结点*p的直接后继,那么应执行以下哪一个操作〔〕

Ap->link=p->link->link;

Bp=p->link;p->link=p->link->link;

Cp->link=p->link;Dp=p->link->link;

21、设单循环链表中结点的构造为〔data,link〕,且rear是指向非空的带表头结点的单循环链表的尾结点的指针。

假设想删除链表第一个结点,那么应执行以下哪一个操作〔D〕

As=rear;rear=rear->link;deletes;

Brear=rear->link;deleterear;

Crear=rear->link->link;deleterear;

Ds=rear->link->link;rear->link->link=s->link;deletes;s为第一个结点硫

22、设单循环链表中结点的构造为〔data,link〕,且first为指向链表表头的指针,current为链表当前指针,在循环链表中检测current是否到达链表表尾的语句是(D)。

Acurrent->link=nullBfirst->link=current

Cfirst=currentDcurrent->link=first

23、一个栈的入栈序列为a,b,c,那么出栈序列不可能的是(C)。

A   c,b,aBb,a,cCc,a,bDa,c,b

24、栈的数组表示中,top为栈顶指针,栈空的条件是(A)。

A   top=0Btop=maxSizeC top=maxSizeDtop=-1

25、栈和队列的共同特点是(C)。

A   都是先进后出B都是先进先出

C   只允许在端点处插入和删除D没有共同点

26、假定一个顺序存储的循环队列的队头和队尾指针分别为f和r,那么判断队空的条件为(D).

Af+1==rBr+1==fCf==0Df==r

27、当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为〔B〕

An-2Bn-1CnDn+1

28、当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,那么向这个栈插入一个元素时,首先应执行〔〕语句修改top指针。

Atop++;Btop--;Ctop=0;Dtop;

29、设链式栈中结点的构造为〔data,link〕,且top是指向栈顶的指针。

假设想摘除链式栈的栈顶结点,并将被摘除结点的值保存到x中,那么应执行以下〔A〕操作。

Ax=top->data;top=top->link;Btop=top->link;x=top->data;

Cx=top;top=top->link;Dx=top->data;

30、设循环队列的构造是:

constintMaxsize=100;

typedefintDataType;

typedefstruct{

DataTypedata[Maxsize];

Intfront,rear;

}Queue;

假设有一个Queue类型的队列Q,试问判断队列满的条件应是以下哪一个语句〔D〕

AQ.front==Q.rear;BQ.front-Q.rear==Maxsize;

CQ.front+Q.rear==Maxsize;DQ.front==(Q.rear+1)%Maxsize;

31、设有一个递归算法如下:

intfact(intn)

{if(n<=0)return1;

elsereturnn*fact(n-1);

}

下面正确的表达是〔B〕

A计算fact(n)需要执行n次递归Bfact(7)=5040

C此递归算法最多只能计算到fact(8)D以上结论都不对

32、设有一个递归算法如下

intx(intn){

if(n<=3)return1;

elsereturnx(n-2)+x(n-4)+1;

}

试问计算x(x(8))时需要计算〔D〕次x函数。

A8次B9次C16次D18次

33、设有广义表D(a,b,D),其长度为〔B〕,深度为〔A〕

A∞B3C2D5

34、广义表A(a),那么表尾为〔C〕

AaB(())C空表D〔a〕

35、以下广义表是线性表的有〔C〕

AE〔a,(b,c)〕BE(a,E)CE(a,b)DE(a,L())

36、递归表、再入表、纯表、线性表之间的关系为〔C〕

A再入表>递归表>纯表>线性表B递归表>线性表>再入表>纯表

C递归表>再入表>纯表>线性表D递归表>再入表>线性表>纯表

37、某二叉树的前序和后序序列正好相反,那么该二叉树一定是〔 B 〕的二叉树。

A空或只有一个结点       B高度等于其结点数

C任一结点无左孩子       D任一结点无右孩子

38、对于任何一棵二叉树T,如果其终端结点数为n0,度为2的结点为n2.,那么(A)

An0=n2+1Bn2=n0+1Cn0=2n2+1Dn2=2n0+1

39、由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为〔B〕

A24B73C48D53

40、一个顺序存储的线性表,设每个结点需占m个存储单元,假设第一个结点的地址为da1,那么第I个结点的地址为〔 A 〕。

Ada1+(I-1)*m   Bda1+I*m  Cda1-I*m  Dda1+(I+1)*m

41、34具有35个结点的完全二叉树的深度为(A)

A5B6C7D8

42、对线性表进展折半搜索时,要求线性表必须〔C〕

A以方式存储且结点按关键码有序排列B以数组方式存储

C以数组方式存储且结点按关键码有序排列D以方式存储

43、顺序搜索算法适合于存储构造为〔B〕的线性表。

A散列存储B顺序存储或存储

C压缩存储D索引存储

44、采用折半搜索算法搜索长度为n的有序表时,元素的平均搜索长度为〔C〕

AO〔n2〕BO〔nlog2n〕CO〔log2n〕DO〔n〕

45、对于一个具有n个顶点和e条边的无向图,进展拓扑排序时,总的时间为(A)

AnBn+1Cn-1Dn+e

46、判断一个有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用〔C〕。

A求关键路径的方法B求最短路径的Dijkstra方法

C深度优先遍历算法D广度优先遍历算法

47、在10阶B-树中根结点所包含的关键码个数最多为〔C〕,最少为(A)

A1B2C9D10

48、对包含n个元素的散列表进展搜索,平均搜索长度为〔C〕

AO〔log2n〕BO〔n〕C不直接依赖于nD上述都不对

二、填空题〔〕

1、   数据的逻辑构造被分为集合构造、线性构造、树形构造、图形构造四种

 2、   数据的存储构造被分为顺序构造、构造、索引构造、散列构造四种3、一种抽象数据类型包括〔数据〕和〔操作〕两个局部。

4、设有两个串p和q,求p在q中首次出现的位置的运算称为〔模式匹配〕

5、  栈、队列逻辑上都是〔线性存储〕构造。

6、线性构造反映结点间的逻辑关系是〔一对一〕的,图中的数据元素之间的关系是〔多对多〕的,树形构造中数据元素间的关系是〔一对多〕的。

7、栈中存取数据的原那么〔 后进先出〕,队列中存取数据的原那么〔 先进先出 〕

8、串是由〔 零个或多个〕字符组成的序列。

〔 长度为零的串 〕称为空串,〔 由一个或多个空格组成的串〕称为空格串。

9、设目标串T=〞abccdcdccbaa〞,模式P=〞cdcc〞那么第〔6〕次匹配成功。

10、一维数组的逻辑构造是〔线性构造〕,存储构造是〔顺序存储表示〕。

对于二维数组,有〔行优先顺序〕和〔列优先顺序〕两种不同的存储方式,对于一个二维数组A[m][n],假设采用按行优先存放的方式,那么任一数组元素A[i][j]相对于A[0][0]的地址为〔n*i+j〕。

11、向一个顺序栈插入一个元素时,首先使〔栈顶指针〕后移一个位置,然后把待插入元素〔写〕到这个位置上。

从一个顺序栈删除元素时,需要前移一位〔栈顶指针〕。

12、在一个循环队列Q中,判断队空的条件为〔Q.front==Q.rear〕,判断队满的条件为〔(Q.rear+1)%MaxSize==q.front〕

13、对于一棵具有n个结点的树,该树中所有结点的度数之和为〔n-1〕。

14、一棵高度为5的满二叉树中的结点数为〔63〕个,一棵高度为3满四叉树中的结点数为〔85〕个。

15、假设对一棵二叉树从0开场进展结点编号,并按此编号把它顺序存储到一维数组中,即编号为0的结点存储到a[0]中,其余类推,那么a[i]元素的左子女结点为〔2*i+1〕,右子女结点为〔2*i+2〕,双亲结点〔i>=1 〕为〔「(i-1)/2┐〕.

16、在一个最大堆中,堆顶结点的值是所有结点中的〔最大值〕,在一个最小堆中,堆顶结点的值是所有结点中的〔最小值〕。

17、具有n个元素的一维数组采用顺序存储构造,每个元素占k个存储单元,第一个元素的地址为LOC(a1),那么,LOC(ai)=LOC(a1)+(i-1)*k。

18、在霍夫曼编码中,假设编码长度只允许小于等于4,那么除掉已对两个字符编码为0和10外,还可以最多对〔4〕个字符编码。

19、设高度为h的空二叉树的高度为-1,只有一个结点的二叉树的高度为0,假设设二叉树只有度为2上度为0的结点,那么该二叉树中所含结点至少有〔 2h+1  〕个。

20、由一棵二叉树的前序序列和〔中序序列〕可唯一确定这棵二叉树。

21、以折半搜索方法搜索一个线性表时,此线性表必须是〔顺序〕存储的〔有序〕表。

22、完全二叉树的第8层有8个结点,那么其叶子结点数是〔68〕。

假设完全二叉树的第7有10个叶子结点,那么整个二叉树的结点数最多是〔235〕

23、对于折半搜索所对应的判定树,它既是一棵〔二叉搜索树〕,又是一棵〔理想平衡树〕。

24、假定对长度n=50的有序表进展折半搜索,那么对应的判定树高度为〔 5 〕,判定树中前5层的结点数为〔31〕,最后一层的结点数为〔19〕。

25、在一个无向图中,所有顶点的度数之和等于所有边数的〔2〕倍。

在一个具有n个顶点的无向完全图中,包含有〔n(n-1)/2〕条边,在一个具有n个顶点的有向完全图中,包含有〔n(n-1)〕条边。

26、对于一个具有n个顶点和e条边的连通图,其生成树中的顶点数和边数分别为〔n〕和〔n-1〕。

27、设线性表中元素的类型是实型,其首地址为1024,那么线性表中第6个元素的存储位置是(1044)。

28、在插入和选择排序中,假设初始数据根本正序,那么选择〔插入排序〕,假设初始数据根本反序,那么最好选择〔选择排序〕。

29、算法是对特定问题的求解步驟的一种描述,它是〔指令〕的有限序列,每一条〔指令〕表示一个或多个操作。

30、对于一个具有n个顶点肯e条边的无向图,进展拓朴排序时,总的进间为〔n〕

31、构造哈希函数有三种方法,分别为(平方取中)法、(除留余数)法、(折迭移位)法。

32、处理冲突的三种方法,分别为(线性探测)、〔随机探测〕、〔链地址法〕。

33、对于含有n个顶点和e条边的无向连通图,利用普里姆算法产生的最小生成树,其时间复杂度为〔O〔n2〕〕、利用克鲁斯卡尔算法产生的最小生成树,其时间复杂度为〔O〔elog2e〕〕

34、快速排序在平均情况下的时间复杂度为〔O〔nlog2n〕〕,在最坏情况下的时间复杂度为〔O〔n2〕〕;快速排序在平均情况下的空间复杂度为〔O〔log2n〕〕,在最坏情况下的空间复杂度为〔O〔n〕〕。

35、假定一组记录的排序码为〔46,79,56,38,40,80〕,对其进展归并排序的过程中,第二趟排序后的结果是〔[38 46 56 79][40 80]〕

36、假定一组记录的排序码为〔46,79,56,38,40,80〕,对其进展快速排序的第一次划分的结果是〔[38 40]46[56 79 80]〕。

37、一个结点的子树的〔个数〕称为该结点的度。

度为〔零〕的结点称为叶结点或终端结点。

度不为〔零〕的结点称为分支结点或非终端结点。

树中各结点度的〔最大值〕称为树的度。

38、设Ki=Kj(1<=i<=n,1<=j<=n,j<>i)且在排序前的序列中Ri领先于Rj(i

40、在堆排序的过程中,对任一分支结点进展调整运算的时间复杂度为〔O〔log2n〕〕,整个排序过程的时间复杂度为〔O〔nlog2n〕〕。

41、在索引表中,每个索引项至少包含有〔关键码值〕域和〔子表地址〕域这两项。

42、假定一个线性表为〔〞abcd〞,〞baabd〞,〞bcef〞,〞cfg〞,〞ahij〞,〞bkwte〞,〞ccdt〞,〞aayb〞〕,假设按照字符串的第一个字母进展划分,使得同一个字母被划分在一个子表中,那么得到的a,b,c三个子表的长度分别为〔3〕,〔3〕,〔2〕。

43、对于包含50个关键码的3阶B-树,其最小高度为〔4〕,最大高度为〔5〕。

44、从一棵B-树删除关键码的过程,假设最终引起树根结点的合并,那么新树比原树的高度〔减1〕

45、假定要对长度n=100的线性表进展散列存储,并采用开散列法处理冲突,那么对于长度m=20的散列表,每个散列地址的同义词子表的长度平均为〔5〕。

46、在散列存储中,装载因子α又称为装载系数,假设用m表示散列表的长度,n表示待散列存储的元素的个数,那么α等于〔n/m〕。

47、在有向图的邻接矩阵中,第i行中“1”的个数是第i个顶点的〔出度〕,第i列中“1”的个数是第i个顶点的〔入度〕。

在无向图的邻接矩阵中,第i行〔列〕中“1”的个数是第i个顶点的〔度〕,矩阵中“1”的个数的一半是图中的〔边数〕。

48、在对m阶B-树中,每个非根结点的关键码数最少为〔「m/2┐-1〕个,最多为〔m-1〕个,其子树棵数最少为〔「m/2┐〕,最多为〔m〕。

三、判断题

四、运算应用题

1、在一个有n个元素的顺序表的第i个元素〔1in〕之前插入一个新元素时,需要向后移动多少个元素?

答案:

需要向后移动n-i+1个元素

2、当一个栈的进栈序列为1234567时,可能的出栈序列有多少种?

6457321是否是合理的出栈序列?

答案:

可能的出栈序列有

种,6457321不是合理的出栈序列。

4、设有序顺序表为{10,20,30,40,50,60,70},采用折半搜索时,搜索成功的平均搜索长度是多少?

答案:

ASLsucc=(1*1+2*2+3*4)/7=17/7

5、在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?

它有多少个叶结点?

多少个分支结点?

高度最大的树的高度是多少?

它有多少个叶结点?

多少个分支结点?

答案:

结点个数为n时,高度最小的树的高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。

6、一棵高度为h的满k叉树有如下性质:

第h层上的结点都是叶结点,其余各层上每个结点都有k棵非空子树,如果按层次自顶向下,同一层自左向右,顺序从1开场对全部结点进展编号,试问:

(1)各层的结点个数是多少?

(2)编号为i的结点的父结点(假设存在)的编号是多少?

(3)编号为i的结点的第m个孩子结点(假设存在)的编号是多少?

(4)编号为i的结点有右兄弟的条件是什么?

其右兄弟结点的编号是多少?

(5)假设结点个数为n,那么高度h是n的什么函数关系?

答案:

〔1〕各层的结点个数是ki(i=0,1,2,....,h)

〔2〕编号为i的结点的父结点(假设存在)的编号是└(i+k-2)/k」

〔3〕编号为i的结点的第m个孩子结点(假设存在)的编号是(i-1)*k+m+1

〔4〕当(i-1)%k<>0时有右兄弟,右兄弟的编号为i+1

〔5〕假设结点个数为n,那么高度h和n的关系为:

h=logk(n*(k-1)+1)-1(n=0时h=-1)

9、题目:

11、将下面的森林变换成二叉树〔7分〕。

A

C

D

B

F

E

K

J

G

H

I

 

A

C

D

B

F

E

K

J

G

H

I

答案:

 

10、将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为二叉树。

〔7分〕

*

+

+

+

f

+

*

+

c

b

a

h

g

d

e

答案:

 

 

12、将给定的图简化为最小的生成树,要求从顶点1出发。

〔7分〕

1

3

2

5

4

7

6

8

5

15

3

10

12

2

7

9

6

 

答案:

1

3

2

5

4

7

6

5

15

3

6

2

7

 

13、某子系统在通信联络中只可能出现8种字符,其出现的概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11试设计赫夫曼编码。

答案:

     

为方便起见,设各种字符的权值w={5,29,7,8,14,23,3,11}。

因为n=8,所以要构造的赫夫曼树共有m=2n-1=2*8-1=15个结点。

生成的赫夫曼树为以下图所示:

23

11

5

3

29

14

7

8

0

0

0

0

0

0

0

1

1

1

1

1

1

1

 

赫夫曼编码为:

概率为0.23的字符编码为:

00

       概率为0.11的字符编码为:

010

概率为0.05的字符编码为:

0110

概率为0.03的字符编码为:

0111

概率为0.29的字符编码为:

10

概率为0.14的字符编码为:

110

概率为0.07的字符编码为:

1110

概率为0.08的字符编码为:

1111

14、一棵二叉树的前序遍历的结果是ABECDFGHIJ,中序遍历的结果是EBCDAFHIGJ,试画出这棵二叉树,并给出这棵二叉树的后序遍历序列。

A

B

F

G

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1