数据结构考试题Word文档下载推荐.docx

上传人:b****2 文档编号:1029588 上传时间:2023-04-30 格式:DOCX 页数:18 大小:78.82KB
下载 相关 举报
数据结构考试题Word文档下载推荐.docx_第1页
第1页 / 共18页
数据结构考试题Word文档下载推荐.docx_第2页
第2页 / 共18页
数据结构考试题Word文档下载推荐.docx_第3页
第3页 / 共18页
数据结构考试题Word文档下载推荐.docx_第4页
第4页 / 共18页
数据结构考试题Word文档下载推荐.docx_第5页
第5页 / 共18页
数据结构考试题Word文档下载推荐.docx_第6页
第6页 / 共18页
数据结构考试题Word文档下载推荐.docx_第7页
第7页 / 共18页
数据结构考试题Word文档下载推荐.docx_第8页
第8页 / 共18页
数据结构考试题Word文档下载推荐.docx_第9页
第9页 / 共18页
数据结构考试题Word文档下载推荐.docx_第10页
第10页 / 共18页
数据结构考试题Word文档下载推荐.docx_第11页
第11页 / 共18页
数据结构考试题Word文档下载推荐.docx_第12页
第12页 / 共18页
数据结构考试题Word文档下载推荐.docx_第13页
第13页 / 共18页
数据结构考试题Word文档下载推荐.docx_第14页
第14页 / 共18页
数据结构考试题Word文档下载推荐.docx_第15页
第15页 / 共18页
数据结构考试题Word文档下载推荐.docx_第16页
第16页 / 共18页
数据结构考试题Word文档下载推荐.docx_第17页
第17页 / 共18页
数据结构考试题Word文档下载推荐.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构考试题Word文档下载推荐.docx

《数据结构考试题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构考试题Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。

数据结构考试题Word文档下载推荐.docx

C.p=p->

nextD.p=p->

14.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为_C___。

A.iB.n=iC.n-i+1D.不确定

15.设栈的输入次序为:

1,2,3,4,5,则不可能是其出栈序列.

A.54321B.45321C.43512D.12345

16.一个递归算法必须包括B

A.递归部分B.终止条件和递归部分

C.迭代部分D.终止条件和迭代部分

17.用方式存储的队列,在进行删除操作时D

A仅修改头指针B.仅修改尾指针

C.头尾指针都要修改D.头尾指针可能都要修改

18.数组A[m]存放循环队列的元素,其头尾指针分别是front和rear,则当前队列的元素个数是__A__。

A.(rear-front+m)%mB.(front-rear+m)%mC.front-rear+1D.rear-front+1

19.栈和队列的共同特点__C__。

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

C.允许在端点插入和删除元素D.没有共同点

20.一个栈的入栈序列a,b,c,d,e,则栈的输出序列是__A__。

A.edcbaB.decbaC.dceabD.abcde

21.栈的特点是__B__,队列的特点是__A__。

A.先进先出B.先进后出

22.从一个栈顶指针HS的链表中删除一个结点,用x保存被删除的结点值,执行的语句为__C__。

A.x=HS;

HS=HS->

nextB.HS=HS->

x=HS->

data

C.x=HS->

data;

nextD.HS->

next=HS;

23.在链队列Q中,插入s所指向的结点执行的语句为__C__。

A.Q.front->

next=s;

B.Q.rear->

Q.rear=s

C.s->

next=Q.rear;

Q.rear=sD.s->

next=Q.front;

Q.front=s

24.空串与空格串是相同的,这种说法__B__。

25.下面关于串的叙述,哪一个是不正确的__B__。

A.串是字符的有限序列B.空串是由空格构成的串

C.匹配模式是串的一种重要运算D.串可以采用链式存储结构

26.设有两个串p和q,求q在p中首次出现的位置的运算称作__B__。

A.连接B.模式匹配

C.求子串D.求串长

27.若串s='

software'

其子串的数目为B

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

28.二维数组A中,每个元素A的长度为3个字节,行下标i从0到7,列下标j从0到9,从首地址SA开始连续存放在存储器内,该数组按行存放时,数组元素A[7][4]的起始地址为__C__。

A.SA+141B.SA+144C.SA+222D.SA+225

29.对稀疏矩阵进行压缩存储的目的是__C__.

A.便于进行矩阵运算B.便于输入输出

C节省存储空间D.降低运算的时间复杂度

30.在以下叙述中正确的是B

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

B.二维数组可以看成是其数据元素为线性表的线性表

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

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

31.广义表((a),a)的表头为C,表尾为C.

A.()B.aC.(a)D.((a))

32.已知广义表L=((x,y,z),a,(u,t,w)),从L中取出原子项t的运算为__D__。

A.Head(Tail(Tail(L)))B.Tail(Head(Head(Tail(L))))

C.Head(Tail(Head(Tail(L))))D.Head(Tail(Head(Tail(Tail(L)))))

33.树最适合用来表示B

A.有序的数据元素B.数据之间具有分支层次关系的数据

C.无序的数据元素D.无太多关系的数据元素

34.如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉树的后序为__B__。

A.uwvtsB.vwutsC.wuvtsD.wutsv

35.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是__D__。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

36.在一非空二叉树的中序遍历序列中,根结点的右边__A__。

A.只有右子树上的所有结点B.只有右子树上的部分结点

C.只有左子树上的部分结点D.只有左子树上的所有结点

37.设m和n是一棵二叉树上的两个结点,在中序遍历,n在m前的条件是C

A.n在m的右方B.n是m的祖先

C.n在m的左方D.n是m的子孙

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

A.16B.32C.31D.10

39.由权(8,2,5,7)的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为D

A.23B.37C.46D.43

40.利用二叉链表存储树,则根结点的右指针是C

A.指向最左孩子B.指向最右孩子C.空D.非空

41.下列存储方式中,哪一个不是树的存储形式?

D

A.双亲表示法B.孩子链表表示法C.孩子兄弟表示法D.顺序存储表示法

42.在一个无向图中,所有顶点的度数之和等于所有边数的__C__倍。

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

43.具有n个顶点和多于n-1条边的无向图B.

A.有可能是树B.一定不是树C.一定是树D.以上答案都不对

44.具有6个顶点的无向图至少应有__A__条边才能确保是一个连通图。

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

45.无向图G=(V,E),其中:

V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},则对该图进行深度优先遍历,得到的序列为:

D

A.abecdfB.acfebdC.aebcfdD.aedfcb

46.下述几种排序方法中,要求内存量最大的是__D__。

A.插入排序B.选择排序C.快速排序D.归并排序

47.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为__C__。

A.希尔排序B.起泡排序C.插入排序D.选择排序

48.在待排序的元素序列基本有序的前提下,效率最高的排序方法是__A_。

A.插入排序B.选择排序C.快速排序D.归并排序

49.下列排序算法中,哪一个是稳定的排序算法?

B

A.直接选择排序B.二分法插入排序C.希尔排序D.快速排序

50.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数A

A.nB.2n-1C.2nD.n-1

二、填空题

1.算法的五个重要特性是有穷性,确定性,可行性,输入和输出.

2.数据的树型结构和图(网)状结构合称非线性结构.

3.抽象数据类型的定义仅取决于它的一组逻辑特性,而与数据在计算机中的表示和实现无关.

4.评价算法质量的指标是正确性,易读性,健壮性,高效性.

5.数据结构中评价算法的两个重要指标是:

时间复杂度和空间复杂度.

6.分析下面算法(程序段),的时间复杂度是__O(mn)__。

s=0;

for(i=0;

i<

n;

i++)

for(j=0;

j<

m;

j++)

s+=B[i][j];

7.当线性表元素的总数基本稳定,且很少进行删除和插入操作时,但是要求以最快的速度存取线性表中的元素,应该采取顺序存储结构.

8.顺序表中逻辑上相邻的元素的物理位置必定相邻,而单链表中逻辑上相邻的元素的物理位置不一定相邻.

9.在各个结点查找概率相等的情况下,从n个结点的单链表中查找一个结点,平均要访问n/2个结点.

10.在单链表中设置头指针的作用是:

简化操作,减少边界条件的判断.

11.在单链表中,除首元结点外,任一结点的存储位置由其直接前驱的指针域指示.

12.对于一个具有n个结点的单链表,在已知p所指向结点后插入一个新结点的时间复杂度是O

(1),在值域为给定值的结点后插入一个新结点的时间复杂度为O(n).

13.在双链表中,每个结点有两个指针域,一个指向_前驱结点__,另一个指向__后继结点___。

14.根据线性表的链式存储结构中每一结点包含的指针个数,将线性表分成单链表和多重链表.

15.在非空双向链表中,在结点q的前面插入结点p的过程如下,请补充

prior=q->

prior;

q->

prior->

next=p;

p->

next=q;

prior=p;

16.一般情况下,将递归算法转换成等价的非递归算法应该设置栈.

17.在解决计算机主机与打印机速度不匹配问题时,通常设置一个打印数据缓冲区,该缓冲区通常是一个队列数据结构.

18.循环队列的引入,目的是为了克服假溢出现象.

19.在栈顶指针为HS的链栈中,判断栈空的条件是HS=NULL.

20.在具有n个单元的循环队列中,如果不专门设置队满标志,则队满时共n-1有个元素.

21.实现字符串拷贝的函数如下,请补足

Voidstrcpy(char*s,char*t)

{while((*s++=*t++)!

='

\0'

);

}

22.空格串是__由一个或多个空格字符组成的串__,其长度等于_其包含的空格个数。

23.空串是不包含任何字符的串,其长度为0.

24.设s='

IAMASTUDENT'

其长度为:

14.

25.组成串的元素只能是:

字符.

26.设s1='

Good'

s2='

'

s3='

bye!

'

则s1,s2和s3连接的结果是Goodbye!

27.若广义表中每个元素都是原子时,广义表便成为线性表.

28.广义表的表尾是指除第一个元素外,剩余元素组成的表.

29.广义表A=((a,b,c,d))的表头为(a,b,c,d),表尾为().

30.数组的存储结构采用顺序存储方式.

31.设二维数组a[0..5,0..6],其每个字节占5个字节,第一个元素的存储地址为1000,若按列存储,则元素a[5,5]存储地址为1175.

32.高度为k的完全二叉树至少有

个叶子结点.

33.若一棵二叉树有50个叶子结点,则该二叉树的总结点数至少是99.

34.有n个叶子结点的哈夫曼树的结点总数为2n-1.

35.根据二叉树的定义,具有三个结点的二叉树有4种.

36.某棵二叉树的中序遍历序列为abcdefg,后序遍历序列为bdcafge,则该二叉树的前序遍历序列eacbdgf,该二叉树对应的森林包含2棵二叉树.

37.若二叉树采用二叉链表存储结构,要交换其所有分支结点的左,右子树的位置,利用中序遍历方法最为合适.

38.线索二叉树的左线索指向其前驱,右线索指向其后继.

39.树所对应的二叉树其根结点的右子树一定为空.

40.利用树的孩子兄弟表示法存储,可以将一棵树转化成二叉树.

41.设无向图的顶点个数为n,则该图最多有n(n-1)/2条边.

42.n个顶点的连通图至少有n-1条边.

43.已知一个图用领接矩阵表示,计算第i个结点的入度的方法是求第i列非零元素的和.

44.G是一个非连通的无向图,共有28条边,则该图至少有9个顶点.

45.一个图的邻接矩阵表示法是唯一的,而邻接表表示法是不唯一的。

46.从邻接矩阵

可以看出,该图共有3个顶点,如果是无向图,则共有2条边.

47.n个顶点的连通图用邻接矩阵表示时,则该矩阵至少有2(n-1)个顶点.

48.设图中有n个顶点,e条边,如果用邻接表表示图,进行深度优先搜索遍历的时间复杂度为O(n+e),如果用邻接矩阵表示图,时间复杂度为

49.从平均时间性能而言,快速排序排序最佳.

50.堆排序是一种选择排序,堆实质上是一棵完全二叉树结点的层次序列.对于含有n个元素的排序,堆排序的时间复杂度为

.所需附加的存储结点是O

(1).

三、用图表回答下列问题

1.设某通信系统使用A,B,C,D,E,F,G,H个字符,出现的频率w={5,29,7,8,14,23,3,11},试构造对应的哈夫曼树(请按左子树根结点的权小于右子树树根结点的权的次序构造)?

答案如图:

 

2.根据下面的邻接链表,画出相应的图,写出每个顶点的度,并用邻接矩阵表示.

答案如图所示:

V1:

3

V2:

2

V3:

3

V4:

V5:

4

V6:

3.画出下列树对应的二叉树,并写出其先根遍历序列:

先根遍历序列:

ABDEGFC

4.画出和下列二叉树对应的森林:

答:

四、阅读下列算法,按要求做答.

1.下面是删除单链表L中最大元素所在结点的类C语言算法,请补足缺失部分使其完整.

voidDelMax(LinkListL){

r=L;

p=L->

if(p){

m=p->

(1);

p=p->

while(p){

if(

(2))

{(3);

(4);

q=r->

(5);

free(q);

}

答案:

(1)L->

next=NULL;

(2)p!

=NULL;

(3)q!

=NULL;

(4)p->

next=r->

(5)r->

next=p.

2.阅读下列算法,说明该算法的作用。

Statusalgorithm1(LinkQueue&

Q){

SqStackStack;

QElemTypeElement;

InitStack(Stack);

while(!

QueueEmpty(Q)){

DeQueue(Q,Element);

Push(Stack,Element);

StackEmpty(Stack)){

Pop(Stack,Element);

EnQueue(Q,Element);

利用栈实现队列的逆置.

3.阅读下列算法,说明该算法的作用。

Statusalgorithm2(StackS,inte){

StackT;

intd;

InitStack(T);

StackEmpty(S)){

Pop(S,d);

if(d!

=e)Push(T,d);

StackEmpty(T)){

Pop(T,d);

Push(S,d);

利用辅助栈T,将栈S中的元素e删除.

4.将下面程序改写成递归过程.

voidalgorithm3(intn){

inti=n;

while(i>

1){

printf(i--);

voidalgorithm4(intj){

if(j>

printf(j);

algorithm4(j-1)

5.阅读下列算法,说明该算法的作用。

BiTreealgorithm5(ElemTypePre[],ElemTypeIn[]){

intPreLen,InLen;

inti,j;

BiTreeBT;

ElemType*subPre,*subIn;

PreLen=strlen(Pre);

InLen=strlen(In);

if(PreLen!

=InLen||PreLen==0)returnNULL;

for(i=0;

i<

InLen&

&

In[i]!

=Pre[0];

i++);

if(i==InLen)returnNULL;

BT=(BiTNode*)malloc(sizeof(BiTNode));

BT->

data=Pre[0];

subPre=(ElemType*)malloc((i+1)*sizeof(ElemType));

subIn=(ElemType*)malloc((i+1)*sizeof(ElemType));

j<

i;

j++){

subPre[j]=Pre[j+1];

subIn[j]=In[j];

subPre[j]='

;

subIn[j]='

lchild=CreatBT(subPre,subIn);

subPre=(ElemType*)malloc((PreLen-i)*sizeof(ElemType));

subIn=(ElemType*)malloc((PreLen-i)*sizeof(ElemType));

for(j=i+1;

PreLen;

subPre[j-i-1]=Pre[j];

subIn[j-i-1]=In[j];

subPre[j-i-1]='

subIn[j-i-1]='

rchild=CreatBT(subPre,subIn);

returnBT;

利用一棵二叉树的先序遍历和中序遍历还原该二叉树.

五、算法设计题

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

voidInsertElem(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是带头结点的单链表的头指针,试编写一个逆序输出表中各个元素的递归算法.

voidTraverseLink(LinkListp){

if(p->

next)TraverseLink(p->

next);

printf(p->

data);

3.写一算法,统计二叉树的结点的总个数。

//利用中序遍历方法,或者先序、后序均可以

voidLeaf(BiTreeT,int&

m){

if(T!

=NULL){

Leaf(T->

lchild,m);

//中根遍历左子树

m++;

//计算结点

rchild,m);

//中根遍历右子树

4.写一算法,求二叉树的高度。

intheight(BiTreeT){

if(T==NULL)return0;

else{

inthl=height(T->

lchild);

inthr=height(T->

rchild);

return1+(hl>

hr?

hl:

hr);

//1加上hl和hr的较大值

5.写一算法,交换二叉树的左右子树。

BiTNodePermute_child(BiTNode*T){

BiTNode*temp;

if(T){

Permute_child(T->

temp=T->

lchild;

T->

lchild=BT->

rchild;

rchild=temp;

6.已知二叉树采用二叉链表存储,设计算法,判定两棵二叉树是否相似.

Statueslike(BiTreeS,BiTreeT){

if(T==NULL&

S==NULL)return1;

elsei

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2