西北民族大学数据结构题库.docx

上传人:b****6 文档编号:8354953 上传时间:2023-01-30 格式:DOCX 页数:16 大小:128.97KB
下载 相关 举报
西北民族大学数据结构题库.docx_第1页
第1页 / 共16页
西北民族大学数据结构题库.docx_第2页
第2页 / 共16页
西北民族大学数据结构题库.docx_第3页
第3页 / 共16页
西北民族大学数据结构题库.docx_第4页
第4页 / 共16页
西北民族大学数据结构题库.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

西北民族大学数据结构题库.docx

《西北民族大学数据结构题库.docx》由会员分享,可在线阅读,更多相关《西北民族大学数据结构题库.docx(16页珍藏版)》请在冰豆网上搜索。

西北民族大学数据结构题库.docx

西北民族大学数据结构题库

选择题

1.在数据结构中,逻辑上可以把数据结构分为()

A.动态结构和静态结构

B.紧凑结构和非紧凑结构

C.线性结构和非线性结构

D.内部结构和外部结构

2.在一个单链表中,若删除p所指结点的后继结点,则执行()。

A.p->next=p->next->next

B.p=p->next,p->next=p->next->next

C.p->next=p->next

D.p=p->next->next

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

A.30

B.31

C.29

D.15

4.已知二叉树中有两个孩子的结点数为18,仅有一个孩子的结点数为30,则总节点数为()。

A.48

B.65

C.67

D.77

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

V={(a,b),(a,e),(a,c),(b,e),(e,f),(f,d),(e,d)},在下面的5个序列中,符合深度优先遍历的序列有多少?

()

(1)aebdfc

(2)acfdeb(3)aedfcb(4)aefdcb(5)aefdbc

A.5个

B.4个

C.3个

D.2个

6.有一个有序表{1,3,5,7,8,10,15,17,19,30,41,50,70},当二分查找值为19的结点时,()次比较后查找成功。

A.2

B.3

C.4

D.9

7.下列不是算法的特性的是()。

A.有穷性B.确定性

C.可能性D.输入和输出特性

8.线性表若采用链式结构时,要求内存中可用存储单元的地址()。

A.一定是不连续的B.连续不连续都可以

C.必须是连续的D.部分地址必须是连续的

9.在一个单链表中,若删除p所指结点的后续结点,则执行()。

A.p->next=p->next-next;

B.p=p->next;p->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next

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

A.dceabB.abcdeC.edcbaD.decba

11.限定线性表有()。

A.栈B.队列C.树D.A和B

12.进行入队运算时,必须先判断队列是否()。

A.空B.满C.下溢D.上溢

13.进行出栈运算时,必须先判断栈是否()。

A.空B.满C.下溢D.上溢

14.判定一个栈ST(栈的存储空间大小为M)为空的条件是()。

A.ST->top!

=0B.ST->top==0

C.ST->top!

=MD.ST->top==M

15.递归函数f(n)=f(n-1)+n(n>1)的递归体是()。

A.f

(1)=0B.f(0)=1

C.f(n)=f(n-1)+nD.f(n)=n

16.串是一种特殊的线性表,其特殊性体现在()。

A.数据元素是一个字符B.数据元素可以是多个字符

C.可以顺序存储D.可以链式存储

17.若串S=”software”,则其子串的数目是()。

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

18.两个字符串相等的充分必要条件是()。

A、两个串的长度相等 B、两个串包含的字符相等

C、两个串的长度相等,并且两个串包含的字符相等。

 

D、两个串的长度相等,并且对应位置上的字符相等。

19.已知广义表L=(a,(b,c)),其表头是()。

A.aB.bC.(a,b)D.(c,d)

20.广义表((a,b),c,d)的表尾是()。

A.aB.bC.(a,b)D.(c,d)

21.树最适合用来表示()。

A、有序数据元素 B、无序数据元素

C、元素之间具有分支层次关系的数据 

D、元素之间无联系的数据

22.在树型结构中,每一个结点都可以有()个孩子结点。

A.2B.1C.0D.任意多

23.关键路径是时间节点网络中()。

A.从源点到汇点的最长路径B.从源点到汇点的最短路径

C.最长回路D.最短回路

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

E.30

F.31

G.29

H.15

25.已知二叉树中有两个孩子的结点数为18,仅有一个孩子的结点数为30,则总节点数为()。

E.48

F.65

G.67

H.77

填空题

1.数据结构包括()三个方面。

(用英文逗号分隔,即**结构,**结构,**结构,注意按次序填写)逻辑结构,存储结构,预算结构或逻辑结构,存储结构,操作结构

2.数据结构被形式地定义为一个二元组DS=(D,S)其中D是

(1)的有限集合,S是D上关系的有限集合。

数据元素

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

4.对于双向链表,删除一个存在的结点需修改的指针为()个。

2

5.()是限定仅在表尾进行插入或删除操作的线性表。

6.设有一个栈,栈顶指针为1000H(十六进制),现有输入序列为1,2,3,4,5经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH之后,栈顶指针是()H。

设栈为顺序栈,每个元素占4个字节。

100C

7.设串s1=”ABCDEFG”,s2=”PQRST”,则Strcat(substr(s1,2,strlen(s2)),substr(s1,strlen(s2),2)

结果是()。

BCDEFEF

8.空格串是指由()字符所组成的字符串。

空格

9.二维数组M[i][j]的每个元素占4个存储单元,行下表i的范围从0到4,列下表j的范围从0到6,M按列存储时M[1][5]元素的起始地址与M按行存储时元素()的起始地址相同。

M[3][5]

10.将整型数组A[1~8]1~8]按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[7][3]的地址是()1100

11.已知完全二叉树的第6层有32个叶子节点,则整个二叉树的节点数最少是()63

12.已知完全二叉树的第7层有14个叶子结点,则整个二叉树的结点数最多时()。

227

13.二叉树的第10层至多有()个结点。

512

14.深度为4的二叉树至多有()个结点。

15

15.将一棵有50个结点的完全二叉树从根这一层开始,每一层上从左到右依次对结点进行编号,根结点的编号为1,则编号

16.二叉树的第9层至多有()个节点。

256

17.深度为7的二叉树至多有()个结点。

127

18.将一棵有81个结点的完全二叉树从跟这一层开始,每一层从左到右以此对结点进行编号,根结点的编号为1,则编号为66的结点的双亲编号为()33

19.设广义表L=(a,(a,b),d,e((i,j),k)),则L的深度是()3

20.

21.是对客观事物的符号表示,能被计算机处理的符号总称。

22.数据的存储结构通常包括数据的_________存储和_________存储。

23.数据的逻辑结构可形式地用一个二元组S=(D,R)来表示,其中D是__________,R是__________。

24.所有插入和删除都在表的一端进行的线性表称为。

25.插入和删除分别在表的两端进行的线性表称为。

26.栈是一种受限的线性表。

27.当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为,设元素占1个空间容量。

28.串的两种基本存储方式是和。

29.串S=”hello”的长度是___________。

30.串S=”worker”的子串数目是___________。

31.空串是指数据元素个数为_________的串。

32.已知数组A[0~9][0~9]的每个元素占5个存储单元,将其按行存储在起始地址为1000的连续的内存单元中,则元素A[6][8]的地址为

33.广义表(a,(a,b),d,e,((i,j),k))的长度是

34.设广义表L=((((a)))),则L的长度为_________,深度为.

35.设广义表L=(a,(a,b),d,e,((i,(j)),k)),则L的深度是,表头为,表尾是。

36.空格串是指由__________符所组成的字符串。

37.数据结构包括_________三个方面。

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

39.对于双向链表,删除一个存在的结点需修改的指针为__________个。

2

40.__________是限定仅在表尾进行插入或删除操作的线性表。

 

判断题

1.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。

2.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。

3.队列是一种插入与删除操作分别在表的两段进行的线性表,是一种先进后出型结构。

4.队列逻辑上是一个上端和下端既能增加又能减少的线性表。

5.如果两个含有相同的字符,则说他们相等。

6.空串与空格串是相同的。

7.所谓取广义表的表尾就是返回广义表中最后一个元素。

8.由于二叉树中每个结点的度最大为2,所以二叉树就是一种特殊的树。

9.二叉树中的叶子结点就是二叉树中没有左右子树的结点,除了根结点外。

10.二叉树的中序遍历中,任意一个结点均处在其子女结点的后面。

11.森林的先序遍历次序与其转换得到的二叉树的中序遍历次序相同。

12.已知一个森林的先序遍历和中序遍历,一定能构造出该森林。

A

13.有向图用邻接矩阵表示后,顶点i的出度等于第i行中非0且非∞的元素个数。

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

15.所谓平衡二叉树是指左、右子树的深度差的绝对值不大于1的二叉排序树。

且左、右子树均为平衡二叉树。

16.所谓平衡二叉树是指左右子树的高度差的绝对值不大于1的二叉排序树。

B

17.数据结构包括数据的逻辑结构和存储结构。

    

18.程序一定是算法。

19.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。

20.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。

21.队列是一种插入与删除操作分别在表的两段进行的线性表,是一种先进后出型结构。

22.顺序表中逻辑上相邻的元素,物理上一定邻接。

23.顺序表中所有结点的类型必须相同。

         

24.由于不需预先分配空间,线性链表的结点结构可以不相同。

25.队列是一种先进后出的线性结构。

26.队列逻辑上是一个下端和上端既能增加又能减少的线性表。

27.栈是一种先进后出的线性结构。

28.循环队列通常用指针来实现队列的首尾相接。

29.串是一种数据对象和操作都特殊的线性表。

30.矩阵压缩存储的目的是为了节省运算时间。

   

31.广义表的节点元素的类型必须相同。

32.广义表是线性表的一种扩展。

33.一个广义表的表尾总是一个广义表。

34.如果两个含有相同的字符,则说他们相等。

35.空串与空格串是相同的。

36.所谓取广义表的表尾就是返回广义表中最后一个元素。

应用题

1.设有一个栈,元素进栈的次序为:

A,B,C,D,E,用I表示进栈操作,O表示出栈操作,写出下列出栈的操作序列。

(1)C,B,A,D,E

(2)A,C,B,E,D

参考答案:

(1)IIIOOOIOIO

(2)IOIIOOIIOO

2.在双链表中,删除指针变量p所指结点,请按顺序写出必要的操作步骤。

参考答案:

①p->front->rear=p->rear;

②p->rear->front=p->front;

3.在双向链表中,要在指针变量q所指结点之后插入一个新结点p,请按顺序写出必要的算法步骤。

 (设:

P所指结点不是链表的首尾结点,q是与p同类型的指针变量)

参考答案:

①p->front=q;

②p->rear=q->rear;

③q->rear->front=p;

③q->rear=p;

4.求后缀表达式。

(1)A^B^C/D

(2)-A+B*C+D/E

(3)A*(B+C)*D-E

(4)(A+B)*C-E/(F+G/H)-D

(5)8/(5+2)-6

参考答案:

(1)AB^C^D/

(2)A–BC*+DE/+

(3)ABC+*D*E-

(4)AB+C*EFGH/+/-D-

(5)852+/6-

5.一棵二叉树的先序、中序和后序序列分别如下,其中有一部分未显示出来,填空构造该二叉树。

(注意用大写字符按位置填写,不要加其他符号)

先序:

A

(1)CD

(2)F(3)HZ(4)K

中序:

(5)BEDFA(6)JKZG

后序:

C(7)F(8)B(9)JZHG(10)

BEGJCHEDKA

6.根据下图所示,分别求二叉树的先序遍历次序

(1),中序遍历次序

(2),后序遍历次序(3)。

(注意次序结点间不要加空格或标点符号,例ABCDE即可)

7.

参考答案:

先序:

ABDCGKHTY中序:

BCGDAHYTK后序:

GCDBYTHKA

8.某通信系统中只可能有A、B、C、D、E、F、G、H、K9种字符,其出现的概率分别为0.03,0.06,0.04,0.05,0.1,0.18,0.22,0.12,0.2,试为这9个字符设置哈夫曼编码,按下表对应序号填空,并计算出带权路径长度WPL=(10)(注意构造哈夫曼树时要求左小右大,前小后大,编码时用左0右1编码)

字符

A

B

C

D

E

F

G

H

K

频率

0.03

0.06

0.04

0.05

0.1

0.18

0.22

0.12

0.2

编码

11000100111001100011011110110100

WPL=2.93

9.通信电文由A、B、C、D、E、F、G、H、K9种字符组成,其出现的概率如下表所示,试为这9个字符设置哈夫曼编码,按下表对应序号填空,并计算出带权路径长度WPL=(10)(注意构造哈夫曼树时要求左小右大,前小后大,编码时用左0右1编码)

字符

A

B

C

D

E

F

G

H

K

频率

4

31

11

6

12

23

1

5

7

编码

00011110011010100010001000001011

WPL=274

10.求下图顶点1到其余顶点的最短路径,按要求填表。

(注意用顶点大写字母V+序号表示,路径用顶点序列构成,如填写V1V3V5等即可,不用分隔。

其他填写方式均不得分)

源点

终点

路径

最小值

V1

V2

V1

V3

V1

V4

V1

V5

V1

V6

V1

V7

V1

V8

V1

V9

V1

V10

11.求下图顶点1到其余顶点的最短路径,按要求填表。

(注意用顶点大写字母V+序号表示,路径用顶点序列构成,如填写V1V3V5等即可,不用分隔。

其他填写方式均不得分)

源点

终点

路径

最小值

V1

V2

V1

V3

V1

V4

V1

V5

V1

V6

V1

V7

V1

V8

V1

V9

V1

V10

12.已知图的邻接表存储结构如下图,试求从1顶点出发求深度优先遍历次序()及深度优先遍历生成树()和广度优先遍历次序()以及广度优先遍历生成树()。

1

2

3

4

5

(注意次序用顶点序号表示,用英文逗号分隔,如填写1,2,3,4,5即可。

生成树用序偶表示,如填写<1,5><2,3><3,6>等。

次序必须按遍历生成次序依次填写。

其它填写方式均不得分)

13.已知图的邻接表存储结构如下图,试求从顶点1出发求深度优先遍历次序()及深度优先遍历生成树()和广度优先遍历次序()及广度优先遍历生成树()

(注意次序用顶点序号表示,用英文逗号隔开,如填写1,2,3,4,5即可。

生成树用序偶表示,如填写<1,5><2,3><3,6>等。

次序必须按照遍历生成次序依次填写。

其它填写方式均不得分)

14.用迪杰斯特拉算法求下图顶点1到其余各顶点的最短路径,按要求填表。

(注意用顶点大写字母V+序号表示,路径用顶点序列构成,如填写V1V3V5等即可,不用分割。

其它填写方式均不得分)

源点

终点

路径

最小值

V1

V2

V1

V3

V1

V4

V1

V5

V1

V6

V1

V7

V1

V8

V1

V9

V1

V10

 

算法填空

1.下面程序是把两个串s1和s2首尾相连的程序,即:

r1=r1+r2

typedefstruct

{

charvec[MAXLEN];//定义合并后串的最大长度

intlen;//len为串的长度

}Str;

voidConCatStr(Str*r1,Str*r2)//字符串连接函数

{

inti;

cout<vec

if(r1->len+r2->len__

(1)__)

cout<<"两个串太长,溢出!

";

else

{

for(i=0;i<__

(2)_;i++)//把r2连接到r1

r1->vec[___(3)__]=r2->vec[i];

r1->vec[r1->len+i]=(4);//添上字符串结束标志

r1->len=[__(5)];//修改新串长度

}

}

MAXLEN,r2->len,r1->len+i,'\0',r1->len+r2->len

2.下列算法的功能是递归方法实现快速排序。

voidQuick_Sort(DataTypeR[],ints,intt)

{

//对顺序表R[s]~R[t]作快速排序

if(__

(1)__)

{

i=Partition(R,s,t);

//算法Partition(R,s,t)功能为将表R[s]~R[t]一分为二,返回值为分界点

Quick_Sort(R,s,___

(2)___);

Quick_Sort(R,i+1,___(3)___);

}

}

voidQuick(DataTypeR[],intn)

{

Quick_Sort(R,1,n);

}

(1)s

(2)i-1(3)t

1.下面程序是把两个串r1和r2首尾相连的程序,即:

r1=r1+r2,阅读程序并填空。

typedefstruct

{charvec[MAXLEN];//定义串的最大长度

intlen;//len为串的长度

}Str;

voidConCatStr(Str*r1,Str*r2)//字符串连接函数

{

inti;

if(r1->len+r2->len__

(1)__)

cout<<"两个串太长,溢出!

";

else

{

for(i=0;i<__

(2)_;i++)//把r2连接到r1

r1->vec[___(3)__]=r2->vec[i];

r1->vec[r1->len+i]=(4);//添上字符串结束标志

r1->len=[__(5)];//修改新串长度

}

2.已知线性表中的元素是无序的,并以带表头结点的单链表作存储。

试写一算法,删除表中所有大于min,小于max的元素,试完成下列程序填空。

Voiddelete(LinkListhead;datatypemin,max)

{

LinkListp,q;

p=head->next;

q=head;

while(p!

=NULL)

{if((p->data<=min)||(________)p->data>=max

{q=p;p=______;}

else

{q->next=_______;p->next

_________;deletep

p=_________;p=q->next

}

}

}

3.假定用一个循环单链表表示一个循环队列,该队列只设一个队尾指针rear,试填空完成向循环队列中插入一个元素为x的结点的函数。

typedefstructqueuenode

{intdata;

structqueuenode*next;

}qu;

InQueue(rear,x)

{qu*rear;intx;qu*head,*s;

s=_______;s->data=__________;

if(rear==NULL)

{rear=s;rear->next;}

else

{head=___________;

rear->next=_________;

rear=s;

__________=head;

}

}

4.设x和y两个串均采用顺序存储方式,下面的程序是比较x和y两个串是否相等的函数,试完成程序填空。

#defineMAXLEN100

typedefstruct

{charvec[MAXLEN];len;

}str;

intsame(x,y)

str*x,*y;

{

inti=0,tag=1;

if(x->len_________y->len)return(0);//(或<>)

else

{

while(i

{if(x->vec[i]__________y->vec[i])tag=0;

_________;}

return(tag);

}

}

 

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

当前位置:首页 > 工作范文 > 其它

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

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