数据结构与算法习题

数据结构与算法习题
数据结构与算法习题

习题1

一、选择题

1.数据结构通常是研究数据的()及它们之间的相互联系。

A.存储结构和逻辑结构B.存储和抽象

C.联系和抽象D.联系与逻辑

2.从逻辑上可以把数据结构分为()两大类。

A.动态结构、静态结构B.顺序结构、链式结构

C.线性结构、非线性结构D.初等结构、构造型结构

3.数据处理的基本单位是()。

A.数据元素B.数据项

C.数据类型D.数据变量

4.数据结构中线性结构中元素对应关系为()。

A.一对一B.一对多

C.多对多D.无关系

5.数据结构中树形结构中元素对应关系为()。

A.一对一B.一对多

C.多对多D.无关系

6.数据结构中图形结构中元素对应关系为()。

A.一对一B.一对多

C.多对多D.无关系

7.数据在计算机存储器内表示时,物理地址和逻辑地址相同并且是连续的,称为()。

A.存储结构B.逻辑结构

C.顺序存储结构D.链式存储结构

8.非线性结构中的每个结点()。

A.无直接前趋结点B.无直接后继结点

C.只有一个直接前趋结点和一个直接后继结点

D.可能有多个直接前趋结点和多个直接后继结点

9.链式存储的存储结构所占存储空间()。

A.分两部分,一部分存放结点的值,另一部分存放表示结点间关系的指针

B.只有一部分,存放结点的值

C.只有一部分,存储表示结点间关系的指针

D.分两部分,一部分存放结点的值,另一部分存放结点所占单元素

10.算法分析的两个主要方面是()。

A.正确性和简单性B.可读性和文档性

C.数据复杂性和程序复杂性D.时间复杂度和空间复杂度

11.算法的计算量大小称为算法的()。

A.现实性B.难度C.时间复杂性D.效率

12.数据的基本单位是()。

A.数据结构B.数据元素C.数据项D.文件

13.每个结点只含有一个数据元素,所有存储结点相继存放在一个连续的存储区里,这种存储结构称为()结构。

A.顺序存储B.链式存储

C.索引存储D.散列存储

14.每一个存储结点不仅含有一个数据元素,还包含一组指针,该存储方式是()存储方式。

A.顺序B.链式C.索引D.散列

15.以下任何两个结点之间都没有逻辑关系的是()。

A.图形结构B.线性结构C.树形结构D.集合

16.在数据结构中,与所使用的计算机无关的是()。

A.物理结构B.存储结构

C.逻辑结构D.逻辑和存储结构

17.下列四种基本逻辑结构中,数据元素之间关系最弱的是()。

A.集合B.线性结构C.树形结构D.图形结构

18.与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。

A.逻辑结构B.存储结构C.逻辑实现D.存储实现

19.每一个存储结点只含有一个数据元素,存储结点存放在连续的存储空间,另外有一组指明结点存储位置的表,该存储方式是()存储方式。

A.顺序B.链式C.索引D.散列

20.算法能正确的实现预定功能的特性称为算法的()。

A.正确性B.易读性C.健壮性D.高效性

21.算法在发生非法操作时可以做出处理的特性称为算法的()。

A.正确性B.易读性C.健壮性D.高效性

22.下列时间复杂度中最坏的是()。

A.O(1) B.O(n) C.O(log2n) D.O(n2)

23.在下面的程序段中,对x的赋值语句的频度为()。

for( i=1;i

for(j=1;j

x++;

A.O(2n) B.O(n) C.O(n2) D.O(log2n)

二、填空题

1.常见的数据结构有集合、线性结构、结构、结构。

2.算法的5个重要特性是有穷性、、可行性、输入、。

3.评价算法的优劣通常主要考虑算法的和这两方面。

4.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。

5.数据的存储结构又叫。

6.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的的有限集合。

7.算法的空间复杂度是指该算法所耗费的,它是该算法求解问题规模n的函数。

8.算法是一个的集合,算法效率的度量可以分为和。

9.若一个算法中的语句频度之和为T(n)=7n+4n2,则算法的时间复杂度为。

10.设有一组数据元素需存储,为了方便查找某元素,数据宜采用存储结构;为了方便插入与删除某元素,数据宜采用存储结构。

三、判断题

1.数据的逻辑结构与数据元素本身的内容和形式无关。()

2.一个数据结构是由一个逻辑结构和这个逻辑结构上一个基本运算集构成的整体。()

3.数据元素是数据的最小单位。()

4.数据的逻辑结构和数据的存储结构是相同的。()

5.程序和算法原则上没有区别,所以在讨论数据结构时可以通用。()

6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。()

7.数据的存储结构是数据的逻辑结构的存储映像。()

习题2

一、选择题

1.下面关于线性表的叙述中,错误的是()。

A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

2.在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为()。

A.O(1)B.O(n)

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

3.两个指针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元素前驱的条件是()。

A.P->next == Q->next B.P->next == Q

C.Q->next == P D.P == Q

4.在单链表中,增加头结点的目的是()。

A.使单链表至少有一个结点B.标志表中首结点的位置

C.方便运算的实现D.说明该单链表是线性表的链式存储结构

5.在顺序表中,只要知道(),就可以求出任意一个结点的存储地址。

A.基地址B.结点大小

C.向量大小D.基地址和结点大小

6.链表不具备的特点是()。

A.随机访问B.不必事先估计存储空间

C.插入删除时不需移动元素

D.所需空间与线性表成正比

7.在()的运算中,使用顺序表比链表好。

A.插入B.根据序号查找

C.删除D.根据元素查找

8.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是()。

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

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

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

D.p->next=s->next;p->next=s;

9.用链表表示线性表的优点是()。

A.便于进行插入和删除操作B.便于随机存取

C.占用的存储空间较顺序表少D.元素的物理顺序与与逻辑顺序一致

10.在一个长度为n的顺序表中,若要删除第i(1≤i≤n)个元素,则需向前移动()个元素。

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

11.在一个长度为n的顺序表中,若要在第i(1≤i≤n)个元素前插入一个元素时,则需向后移动()个元素。A.n-i+1 B.n-i-1 C.n-i D.i

12.设p为指向单循环链表上某结点的指针,则*p的直接前驱()。

A.找不到B.查找时间复杂度为O(1)

C.查找时间复杂度为O(n)D.查找结点的次数约为n

13.等概率情况下,在有n个结点的顺序表上做插入结点运算,需平均移动结点的数目为()。

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

14.以下链表结构中,从当前结点出发能够访问到任意结点的是()。

A.单向链表和双向链表

B.循环链表和单向链表

C.循环链表和双向链表

D.单向链表、双向链表和循环链表

15.对具有n个结点的线性表进行插入或删除操作,所需的算法时间复杂度为()。

A.O(n2) B.O(nlog2n)

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

二、填空题

1.线性表L=(a1,a2,…,a n)采用顺序存储,假定删除表中任意元素的概率相同,则删除一个元素平均需要移动元素的个数是。

2.顺序表相对于链表的优点是:和随机存取;链表相对于顺序表的优点是:方便。

3.在单链表中要在已知结点*P之前插入一个新结点,需找到*P的直接前趋结点的地址,其查找的时间复杂度为。

4.在长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移个元素。

5.链表相对于顺序表的优点是插入、删除方便;缺点是存储密度。

6.链式存储的特点是利用来表示数据元素之间的逻辑关系。

7.在双向链表中,每个结点有两个指针域,一个指向其结点,另一个指向其结点。

8.在一个双链表中,设指针p是指向该表中待删除的结点,则需要执行的操作为:。

9.若对一个线性表经常进行查找操作,而很少进行插入和删除操作时,则采用存储结构为宜,相反,若经常进行的是插入和删除操作时,则采用存储结构为宜。

三、判断题

1.线性表的链式存储结构优于顺序存储结构。()

2.链表的每个结点都恰好包含一个指针域。()

3.在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。()

4.顺序存储方式的优点是存储密度大,插入、删除效率高。()

5.线性链表的删除算法简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。

6.顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。()

7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。()

8.线性表采用顺序存储,必须占用一片连续的存储单元。()

9.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。()

10.插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。()

习题3

一、选择题

1.对于栈操作数据的原则是()。

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

C.后进后出D.不分顺序

2.有6个元素按6,5,4,3,2,1 的顺序进栈,问下列()不是合法的出栈序列?

A.5 4 3 6 1 2B.4 5 3 1 2 6

C.3 4 6 5 2 1D.2 3 4 1 5 6

3.插入和删除只能在一端进行的线性表,称为()。

A.队列B.循环队列C.栈D.循环栈

4.输入序列为ABC,可以变为CBA时,经过的栈操作为()。

A.push,pop,push,pop,push,pop B.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,pop D.push,pop,push,push,pop,pop

5.设有编号为1,2,3,4的四辆列车,顺序进入一个栈结构的站台,下列不可能的出站顺序为()。

A.1234 B.1243

C.1324 D.1423

6.如果以链表作为栈的存储结构,则出栈操作时()。

A.必须判别栈是否满B.必须判别栈是否空

C.必须判别栈元素类型D.队栈可不做任何判别

7.顺序栈存储空间的实现使用()存储栈元素。

A.链表B.数组C.循环链表D.变量

8.在C语言中,一个顺序栈一旦被声明,其占用空间的大小()。

A.已固定B.不固定

C.可以改变D.动态变化

9.从一个栈顶指针为top的链栈中删除一个结点时,用x保存被删除的结点,应执行下列()命令。

A.x=top;top=top->next; B.top=top->next;x=top->data;

C.x=top->data;D.x=top->data;top=top->next;

10.4个元素按A,B,C,D顺序进S栈,执行两次Pop(S,x)运算后,栈顶元素的值是()。

A.A B.B C.C D.D

11.在一个栈顶指针为HS的链栈中,将一个S指针所指的结点入栈,应执行下列()命令。

A.HS->next=S;

B.S->next=HS->next;HS->next=S;

C.S->next=HS->next;HS=S;

D.S->next=HS;HS=HS->next;

12.向顺序栈中压入元素时,()。

A.先存入元素,后移动栈顶指针

B.先移动栈顶指针,后存入元素

C.谁先谁后无关紧要

D.同时进行

13.一个栈的入栈次序ABCDE,则栈的不可能的输出序列是()。

A.EDCBA B.DECBA

C.DCEAB D.ABCDE

14.设有一个顺序栈S,元素A,B,C,D,E,F,依次进栈,如果6个元素出栈的顺序是B,D,C,F,E,A,则栈的容量至少应是()。

A.3 B.4

C.5 D.6

二、填空题

1.对于栈只能在位置插入和删除元素。

2.在顺序栈中,当栈顶指针top=-1时,表示。

3.在有n个元素的栈中,进栈操作的时间复杂度为。

4.在栈中,出栈操作的时间复杂度为:。

5.在一个链栈中,若栈顶指针等于NULL,则表示。

6.向一个栈顶指针为top的链栈插入一个新结点*p时,应执行和操作。

7.已知顺序栈S,在对S进行进栈操作之前首先要判断。

8.已知顺序栈S,在对S进行出栈操作之前首先要判断。

9.4个元素按A,B,C,D顺序进S栈,执行两次Pop(S,x)运算后,x的值是。

10.当栈中元素为M时,做进栈操作时发生上溢,则说明栈的最大容量为。

11.一个栈的输入序列是:1,2,3则不可能的栈输出序列是。

12.若进栈的次序是A,B,C,D,E,执行3次出栈操作以后,栈顶元素为。

三、判断题

1.栈是运算受限制的线性表。()

2.在栈空的情况下,不能做出栈操作,否则产生下溢出。

()

3.栈一定是顺序存储的线性结构。()

4.栈的特点是“后进先出”。()

5.空栈就是所有元素都为0的栈。()

6.在C语言中设顺序栈的长度为MAXLEN,则top=MAXLEN时表示队满。()

7.链栈与顺序栈相比,其特点之一是通常不会出现栈满的情况。()

8.一个栈的输入序列为:A,B,C,D,可以得到输出序列:C,A,B,D。()

9.递归定义就是循环定义。()

10.将十进制数转换为二进制数是栈的典型应用之一。()

四、应用题

1.写出下列程序段的运行结果(栈中的元素类型是char):

main()

{

SeqStack S;

char x,y;

InitStack(&S);

x='C';

y='K';

Push(&S,x);

Push(&S,'A');

Push(&S,y);

Pop(&S,&x);

Push(&S,'T');

Push(&S,x);

Pop(&S,&x);

Push(&S,'S');

while(!EmptyStack(&S))

{

Pop(&S,&y);

printf("%c",y);

}

printf("%c\n",x);

}

2.将一个非负十进制整数转换成八进制数的算法实现。

3.设计一个算法判别算术表达式中的圆括号是否配对正确。

习题4

一、选择题

1.对于队列操作数据的原则是()。

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

C.先进后出D.不分顺序

2.队列是限定在()进行操作的线性表。

A.中间B.队首

C.队尾D.端点

3.队列中的元素个数是()。

A.不变的B.可变的

C.任意的D.0

4.同一队列内各元素的类型()。

A.必须一致B.不能一致

C.可以不一致D.不限制

5.队列是一个()线性表结构。

A.不加限制的B.推广了的

C.加了限制的D.非

6.当利用大小为n的数组顺序存储一个队列时,该队列的最后一个元素的下标为()。A.n-2 B.n-1

C.n D.n+1

7.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。A.(rear+1) % n==front B.rear==front

C.rear+1==front D.(rear-1) % n==front

8.最大容量为n的循环队列,队尾指针是rear,队头是front,则队满的条件是()。A.(rear+1) % n==front B.rear==front

C.rear+1==front D.(rear-l) % n==front

9.循环队列占用的空间()。

A.必须连续B.不必连续

C.不能连续D.可以不连续

10.存放循环队列元素的数组data有10个元素,则data数组的下标范围是()。

A.0~10 B.0~9

C.1~9 D.1~10

11.若进队的序列为:A,B,C,D,则出队的序列是()。

A.B,C,D,A B.A,C,B,D

C.A,B,C,D D.C,B,D,A

12.4个元素按:A,B,C,D顺序连续进队Q,则队尾元素是()。

A.A B.B

C.C D.D

13.循环队列SQ队满的条件是()。

A.SQ->rear==SQ->front

B.(SQ->rear+1)% MAXLEN ==SQ->front

C.SQ->rear==0

D.SQ->front==0

14.设链栈中结点的结构:data为数据域,next为指针域,且top是栈顶指针。若想在链栈的栈顶插入一个由指针s所指的结点,则应执行下列()操作。

A.s->next=top->next;top->next=s;

B.top->next=s;

C.s->next=top;top=top->next;

D.s->next=top;top=s;

15.若用一个大小为6的数组来实现循环队列,且当前front和rear的值分别为3和0,当从队列中删除一个元素,再加入两个元素后,front和rear的值分别为()。

A.5和1B.4和2

C.2和4 D.1和5

16.栈和队列的共同点是()。

A.都是先进先出

B.都是先进后出

C.只允许在端点处插入和删除元素

D.没有共同点

17.栈和队都是()。

A.顺序存储的线性结构

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

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

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

二、填空题

1.循环队列的引入,目的是为了克服现象。

2.在队列中存取数据应遵循的原则是。

3.是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

4.在队列中,允许插入的一端称为。

5.在队列中,允许删除的一端称为。

6.队列在进行出队操作时,首先要判断队列是否为。

7.顺序队列在进行入队操作时,首先要判断队列是否为。

8.顺序队列初始化后,front=rear= 。

9.循环队列的队首指针为front,队尾指针为rear,则队空的条件为。

10.链队列LQ为空时,LQ->front->next= 。

11.在一个链队列中,若队首指针与队尾指针的值相同,则表示该队列为。

12.设循环队列的头指针front指向队首元素,尾指针rear指向队尾元素后的一个空闲元素,队列的最大空间为MAXLEN,则队满标志为。

三、判断题

1.队列是限制在两端进行操作的线性表。()

2.判断顺序队列为空的标准是头指针和尾指针都指向同一个结点。()

3.在链队列上进行出队操作时,会改变front指针的值。()

4.在循环队列中,若尾指针rear大于头指针front,其元素个数为rear-front。()

5.在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是p=h。

6.链队列在一定范围内不会出现队满的情况。()

7.在循环链队列中无溢出现象。()

8.栈和队列都是顺序存储的线性结构。()

9.在队列中允许删除的一端称为队尾。()

10.顺序队和循环队关于队满和队空的判断条件是一样的。()

四、应用题

1.请简述线性表、栈、队列有什么异同?

2.写出下列程序段的运行结果(队列中的元素类型是char)

main()

{

SeqQueue Q;

char x,y;

x='E';

y='C';

InitQueue(&Q);

EnQueue(&Q,'H');

EnQueue(&Q,'R');

EnQueue(&Q,y);

DeQueue(&Q,&x);

EnQueue(&Q,x);

DeQueue(&Q,&x);

EnQueue(&Q,'A');

while(!EmptyQueue(&Q))

{

DeQueue(&Q,&y);

printf("%c",y);

}

printf("%c\n",x);

}

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

typedef struct queuenode

{

int data;

struct queuenode*next;

}qu;

InQueue(qu*rear,int x)

{

qu*head,*s;

s=(1);

s->data=(2);

if(rear==NULL)

{

rear=s;rear->next=( 3);

}else

{

head=(4);

rear->next=(5);

rear=s;

(6)=head;

}

}

4.一个用单链表组成的循环队列,只设一个尾指针rear,不设头指针,请编写如下算法:(1)向循环队列中插入一个元素为x的结点;

(2)从循环队列中删除一个结点。

习题5

一、选择题

1.以下说法正确的是()。

A.串是一种特殊的线性表B.串的长度必须大于零

C.串中的元素只能是字母D.空串就是空白串

2.设有一个字符串S="Welcome to Shenyang!",问该串的长度为()。

A.18B.19

C.20 D.21

3.设有一个字符串S="abcdefgh",问该串的最大子串个数为()。

A.8 B.36

C.37 D.9

4.两个字符串相等的条件是()。

A.两串的长度相等

B.两串包含的字符相同

C.两串的长度相等,并且两串包含的字符相同

D.两串的长度相等,并且对应位置上的字符相同

5.某串的长度小于一个常数,则采用()存储方式最节省空间。

A.链式B.顺序

C.堆结构D.无法确定

6.以下论述正确的是()。

A.空串与空格串是相同的

B."tel"是"Teleptone"的子串

C.空串是零个字符的串

D.空串的长度等于1

7.以下论断正确的是()。

A.“”是空串,“ ”是空格串

B."BEIJING"是"BEI JING"的子串

C."something"<"Somethig"

D."BIT"="BITE"

8.设有两个串S1和S2,则StrCompare(S1,S2)运算称做()。

A. 串连接B.模式匹配

C. 求子串D.串比较

9.串的模式匹配是指()。

A.判断两个串是否相等

B.对两个串比较大小

C.找某字符在主串中第一次出现的位置

D.找某子串在主串中第一次出现的第一个字符位置

10.若SubString(Sub,S,pos,len)表示用Sub返回串S的第pos个字符起长度为len的子串的操作,则对于S="Data Structure",SubString(Sub,S,6,3)的结果为()。

A."ta Str" B."Str"

C." tru" D.以上均不正确

11.若StrIndex(S,T)表示求T在S中的位置的操作,则对于S="Beijing and Nanjing",T="jing",StrIndex(S,T)的结果为()。

A.2 B.3 C.4 D.16

12.S="morning",执行求子串函数SubStr(S,2,2)后的结果为()。

A."mo"B."or" C."in" D."ng"

13.S1="Good",S2="Morning",执行串连接函数ConcatStr(S1,S2)后的结果为()。A."GoodMorning"B."Good Morning"

C."GOODMORNING" D."GOOD MORNING"

14.S1="good",S2="morning",执行函数SubStr(S2,4,LenStr(S1))后的结果为()。A."good"B."ning"C."go" D."morn"

15.设串S1="ABCDEFG",S2="PQRST" ,则ConcatStr(SubStr(S1,2,LenStr(S2)),SubStr(S1,LenStr(S2),2))的结果串为()。

A.BCDEF B.BCDEFG

C.BCPQRST D.BCDEFEF

16.广义表是线性表的推广,它们之间的区别在于()。

A.能否使用子表B.能否使用原子项

C.是否能为空D.表的长度

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

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

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

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

二、填空题

1.字符串按存储方式可以分为:顺序存储、链接存储和。

2.在C语言中,以字符表示串值的终结。

3.空格串的长度等于。

4.在空串和空格串中,长度不为0的是。

5.两个串相等是指两个串长度相等,且对应位置的。

6.设S=“My mather”,则LenStr(s)= 。

7.两个字符串分别为:S1="Today is",S2="24 July,2011",ConcatStr(S1,S2)的结果是:。8.串顺序存储非紧凑格式的缺点是。

9.串顺序存储紧凑格式的缺点是对串的字符处理。

10.串链接存储的优点是,缺点是。

11.假设有两个字符串S1和S2,其中S1="abcdxyz",S2="rest",那么如果进行了下面的运算StrCat(SubString(Sub, S1,3,2), SubString(Sub, S1, StrLength(S2),3)),其结果为。

12.广义表((a),((b),(c,d,e)))的表头是_________,表尾是___________。

三、判断题

1.串是n个字母的有限序列(n≥0 )。()

2.空串与由空格组成的串没有区别。()

3.空串是任意串的子串。()

4.在顺序存储结构中,串的插入算法是非常方便的。()

5.数组的顺序存储结构有两种:按行序存储与按列序存储。()

6.串的数据元素是一个字符。()

7.串的长度是指串中不同字符的个数。()

8.如果两个串含有相同的字符,则说明它们相等()

9.如果一个串中所有的字母均在另一个串中出现,则说明前者是后者的子串。()

10.串的堆分配存储是一种动态存储结构。()

11.“DT”是“DATA”的子串。()

12.串中任意个字符组成的子序列称为该串的子串()

13.子串的定位运算称为模式匹配。()

14.在链串中为了提高存储密度,应该增大结点的大小。()

15.广义表不能递归。()

16.广义表组成的元素可以是不同形式的元素。()

四、应用题

1.下面程序是把两个串r1和r2首尾相连的程序,即:r1=r1+r2,试完成程序填空。

typedef Struct

{

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

int len;/*len为串的长度*/

}St;

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

{

int i;

cout<vec<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);/*修改新串长度*/

}

}

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

typedef struct

{

char vec[MAXLEN];

int len;

}str;

int same(str*x,str*y)

{

int i=0,tag=1;

if(x->len(1)y->len)return(0);

else

{

while(ilen(2)tag)

{

if(x->vec[i](3)y->vec[i])

(4);

(5);

}

return(tag);

}

}

3.简述广义表具有哪些性质?

4.编写算法,求串S中所含不同字符的总数和每种字符的个数。

5.有两个串S1和S2,设计一个算法,求一个串T,使其中的字符是S1和S2中的公共字符。

习题6

一、选择题

1.假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为()个。

A.15 B.16 C.17 D.47

2.在一棵二叉树上第3层上的结点数最多为()。

A.2 B.4

C.6 D.8

3.用顺序存储的方法将完全二叉树中所有结点逐层存放在数组a[1]~a[n]中,结点a[i]若有左孩子,其左孩子的编号为结点()。

A.a[2i+1] B.a[2i-1]

C.a[i/2] D.a[2i]

4.已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为()。

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

5.具有35个结点的完全二叉树的深度为()。

A.5 B.6

C.7 D.8

6.二叉树的先序遍历序列为ABC的不同二叉树有()种形态。

A.3 B.4 C. 5 D.6

7.设有一棵二叉树,其先序遍历序列是:ABCDEFG,中序遍历序列是:CBAEDFG,则该二叉树的后序遍历序列是()。

A.CBDFGEA B.CBDGFEA C.CBEFGDA D.CBEGFDA

8.某二又树的后序遍历序列为DABEC,中序遍历序列为DEBAC,则先序遍历序列为()。

A.ACBED B.DECAB C.DEABC D.CEDBA

9.在完全二叉树中,如果一个结点是叶子结点,则它没有()。

A.左孩子结点B.右孩子结点

C.左、右孩子结点D.左、右孩子结点和兄弟结点

10.在下列存储形式中,哪一种不是树的存储形式()。

A.双亲表示法B.孩子链表表示法

C.孩子兄弟链表表示法D.顺序存储表示法

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

A.有序数据元素

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

C.无序数据元素

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

12.在下图所示的四棵二叉树中,不属于完全二叉树的是()。

13.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,那么度为0的结点数有()个。

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

14.任何一棵二叉树的叶子结点在先序、中序、后序遍历序列中的相对次序()。

A.不发生改变B.发生改变

C.不能确定D.以上都不对

15.A、B为一棵二叉树上的两个叶子结点,在中序遍历时,A在B前的条件是()。

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

C.A在B的左方D.A是B的子孙

二、填空题

1.树中结点的最大层次称为树的______________。

2.假定一棵树的广义表表示法为A(B(E),C(F(H,I,J),G),D),则该树的度为_________,树的深度为_________,终端结点的个数为_________,单分支结点的个数为_________,双分支的结点个数为_________,三分支的结点个数为

_________,C结点的双亲结点为_________,其孩子结点为_________和_________结点。

3.对于一个具有n个结点的二叉树,当它为一棵_________二叉树时,具有最小高度,即为_________,当它为一棵单支树时具有_________高度,即为_________。

4.一棵深度为k的满二叉树的结点总数为_________,一棵深度为k的完全二叉树的结点总数的最小值为

_________,最大值为_________。

5.对于二叉树来说,第i层上最多有_________个结点。

6.由三个结点构成的二叉树,共有_________种不同的结构。

7.由一棵二叉树的先序序列和_____________序列可唯一确定这棵二叉树。

8.设F是森林,B是由F转换得到的二叉树,F中有n个非终端结点,B中右指针域为空的结点有

______________。

9.先序序列和中序序列相同的二叉树为_______________。

10.设一棵二叉树共有50个叶子结点(终端结点),则有____________度为2的结点。

11.哈夫曼树是指________________的二叉树。

12.由带权为3,6,2,5的4个叶子结点构成的一棵哈夫曼树,则带权路径长度为________。

三、判断题

1.在任意一棵二叉树中,终端结点的个数等于度为2的结点个数加1。()

2.由树转化为二叉树,其根结点的右子树总是空的。()

3.在满二叉树中,存在度为1的结点。()

4.根据任意一种遍历序列即可唯一确定对应的二叉树。()

5.由二叉树的先序序列和后序序列可以唯一确定一棵二叉树。()

6.若有一个叶子结点是某子树的中序遍历的最后一个结点,则它必须是该子树的先序遍历的最后一个结点。7.树结构中的每个结点最多只有一个直接前驱。()

8.完全二叉树一定是满二叉树。()

9.由树转换成二叉树,其根结点的右子树一定为空。()

10.在先序遍历二叉树的序列中,任何结点的子树的所有结点都是直接跟在该结点之后。()

11.一棵二叉树中序遍历序列的最后一个结点,发家是该二叉树先序遍历的最后一个结点。()

12.已知二叉树的先序遍历和后序遍历不能唯一确定这棵二叉树,这是因为不知道根结点是哪一个。

()

四、应用题

1.设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左,右两个孩子的结点个数N2;只有非空左孩子的个数NL;只有非空右孩子的结点个数NR和叶子结点个数N0。其中N2、NL、NR、N0都是全局变量,且在调用count(t)之前都置为0。请将下面程序空处补完整。

typedef struct node

{ int data;

Struct node *lchild,*rchild;

}node;

int N2,NL,NR,N0;

void count(node *t)

{ if (t->lchild!=NULL)

if ( (1)___) N2++; else NL++;

else if ( (2)___) NR++;

else (3)___

if(t->lchild!=NULL) (4)___

if(t->rchild!=NULL) (5)___

}

2.将图6-22中的森林转换成一棵二叉树,并对这棵二叉树进行先序、中序和后序遍历,写出其遍历序列。

3.已知一棵二叉树的中序序列和后序序列分别为BCDEAFHG和DECBHGFA,画出这棵二叉树,并写出其先序遍历的序列。

4.已知二叉树如图6-23所示。

(1)给出该二叉树的后序遍历的结果。

(2)如果该图表示的是采用孩子兄弟法转换后的一棵二叉树,请画出原来的森林。

5.给定一组权值{3,6,9,14,8,5,4,19,25},试设计相应的哈夫曼树,并求其带权路径长度WPL。6.已知一个电文字符集中有8个字符{A,B,C,D,E,F,G,H},它们使用的频率为{0.04,0.21,0.06,0.07,0.15,0.18,0.12,0.03},设计一个哈夫曼编码。(提示:哈夫曼树的每个分支左分支设为0,右分支设为1,要求同层中叶子结点权值从左到右,从小到大)。

7.编写一个递归算法,实现将二叉树中每一个结点的左右子树互换的功能。

习题7

一、选择题

1.图中有关路径的定义是()。

A.由顶点和相邻顶点序偶构成的边所形成的序列

B.由不同顶点所形成的序列

C.由不同边所形成的序列

D.上述定义都不是

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

A.n-1B.n(n-1)/2 C.n(n+1)/2 D.0E.n2

3.一个n个顶点的连通无向图,其边的个数至少为()。

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

4.要连通具有n个顶点的有向图,至少需要()条边。

A.n-l B.n C.n+l D.2n

5.n个结点的完全有向图含有边的数目()。

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

6.一个有n个结点的图,最少有()个连通分量,最多有()个连通分量。

A.0 B.1 C.n-1 D.n

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

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

8.下列说法不正确的是()。

A.图的遍历是从给定的源点出发每一个顶点仅被访问一次

B.遍历的基本算法有两种:深度优先遍历和广度优先遍历

C.图的深度优先遍历不适用于有向图

D.图的深度优先遍历是一个递归过程

9.用邻接表表示图进行深度优先遍历时,通常采用()来实现算法。

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

10.用邻接表表示图进行广度优先遍历时,通常采用()来实现算法。

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

11.任何一个无向连通图的最小生成树()。

A.只有一棵B.一棵或多棵C.一定有多棵D.可能不存在

12.无向图顶点V的度是关联于该顶点()的数目。

A.顶点B.边C.序号D.下标

13.无向图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)},对该图进行深度优先遍历,得到的顶点序列正确的是()。

A.a,b,e,c,d,f B.a,c,f,e,b,d C.a,e,b,c,f,d D.a,e,d,f,c,b

14.一个无向图有5个顶点、8条边,则其生成树将要去掉()条边。

A.3B.4C.5 D.6

二、填空题

1.判断一个无向图是一棵树的条件是。

2.有向图G的强连通分量是指。

3.一个连通图的是一个极小连通子图。

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

5.若用n表示图中顶点数目,则有条边的无向图成为完全图。

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

7.在有n个顶点的有向图中,若要使任意两点间可以互相到达,则至少需要条弧。

8.在有n个顶点的有向图中,每个顶点的度最大可达。

9.设G为具有N个顶点的无向连通图,则G中至少有条边。

10.n个顶点的连通无向图,其边的条数至少为。

11.如果含n个顶点的图形形成一个环,则它有棵生成树。

12.N个顶点的连通图的生成树含有条边。

13.构造n个结点的强连通图,至少有条弧。

14.有N个顶点的有向图,至少需要条弧才能保证是连通的。

15.已知一无向图G=(V,E),其中v={a,b,c,d,e},E={(a,b),(a,d),(a,c),(d,c),(b,e)},现用某一种图遍历方法从顶点a 开始遍历图,得到的序列为abecd,则采用的是遍历方法。

三、判断题

1.连通分量是无向图的极小连通子图。()

2.用邻接矩阵存储图时,在不考虑压缩存储的情况下,所占用的存储空间与图中结点个数有关,而与图的边数无关。()

3.图可以没有边,但不能没有顶点。()

4.在有向图中,是两条不同的边。()

5.邻接表只能用于有向图的存储。()

6.若以某个顶点开始,对有n个顶点的有向图G进行深度优先遍历,所得的遍历序列唯一,则可以断定其弧数为n-1。()

7.有向图不能进行广度优先遍历。()

8.若一个无向图以顶点v1为起点进行深度优先遍历,所得的遍历序列唯一,则可以唯一确定该图。

()

9.带权图最小生成树是唯一的。()

四、应用题

1.已知一个无向图如图7-19所示。

(1)要求用普里姆(Prim)算法求出最小生成树(假设以①为起点)。可用表形式将每个步骤选择哪条边,U 集合和V-U集合的变化过程表示出来,最后画出该图的最小生成树)。

(2)要求用克鲁斯卡尔(Kruskal)算法求出最小生成树(可用表的形式将每步所选边及其权值表示出来)。

图7-19

2.如图7-20所示:

(1)画出G的邻接矩阵;

(2)画出G的邻接表表示图;

(3)根据画出的邻接表,以顶点0为开始,写出G的深度优先遍历序列和广度优先遍历序列。

3.用迪杰斯特拉算法,求图7-21中从顶点0到其它各顶点的最短路径。

图7-20 图7-21

4.编写一个将无向图的邻接矩阵转换成邻接表的算法。

习题8

一、选择题

1.查找表是以()为查找结构的。

A.集合B.图C.树D.文件

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

A.散列存储B.顺序存储或是链式存储

C.压缩存储D.索引存储

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

A.以顺序方式存储

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

C.以链接方式存储

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

4.有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当折半查找值为82的结点时,()次比较后查找成功。

A.2 B.3 C.4 D.5

5.用折半查找表的元素的速度比用顺序法()

A.必然快B.必然慢C.相等D.不能确定

6.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度()

A.必定快B.不一定

C.在大部分情况下要快D.取决于表递增还是递减

7.当采用分块查找时,数据的组织方式为()

A.数据分成若干块,每块内数据有序

B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C.数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块

D.数据分成若干块,每块(除最后一块外)中数据个数需相同

8.二叉排序树的查找效率与二叉树的(1)有关, 在(2)时其查找效率最低。

(1)A.高度B.结点的多少C.树型D.结点的位置

(2)A.结点太多B.完全二叉树C.呈单枝树D.结点太复杂。

9.要进行顺序查找,则线性表(1);要进行折半查询,则线性表(2)。

A.必须以顺序方式存储;

B.必须以链式方式存储;

C.既可以以顺序方式存储,也可以链式方式存储;

D.必须以顺序方式存储,且数据已按递增或递减顺序排好;

E.必须以链式方式存储,且数据已按递增或递减的次序排好。

10.设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=key MOD 13,散列地址为1的链中有()个记录。

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

11.下面关于哈希(Hash,杂凑)查找的说法正确的是()

A.哈希函数构造的越复杂越好,因为这样随机性好,冲突小

B.除留余数法是所有哈希函数中最好的

C.不存在特别好与坏的哈希函数,要视情况而定

D.若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单的将该元素删去即可

12.若采用链地址法构造散列表,散列函数为H(key)=key MOD 17,则需(1)个链表。这些链的链首指针构成一个指针数组,数组的下标范围为(2)

(1)A.17 B.13 C.16 D.任意

(2)A.0至17 B.1至17 C.0至16 D.1至16

13.如果要求一个线性表既能较快地查找,又能适应动态变化的要求,可以采用()查找方法。

A.分块B.顺序C.折半D.散列

14.衡量查找算法效率的主要标准是()。

A.元素个数B.平均查找长度C.所需的存储量D.算法难易程序

二、填空题

1.以折半查找方法在一个查找表上进行查找时,要求该查找表必须是顺序存储的________表。

2.从有序表{12,18,32,45,58,72,83,96}中分别折半查找45和56元素时,其比较次数为________和________。

3.在分块查找方法中,首先查找___________,然后再查找相应的_________。

4.在分块查找方法中,表中每块内的元素可以________________,块与块之间必须按_______________存放。

5.顺序查找、折半查找、分块查找都属于_________________查找。

6.在一棵二叉排序树中,每个分支结点的左子树中所有结点的值一定_________该结点,每个分支结点的右子树中所有结点的值一定_________该结点。

7.向一棵二叉排序树中插入一个元素时,若元素的值小于根结点的值,是接着向根结点的___________插入,若元素的值大于或等于根结点的值,则接着向根结点的____________插入。

8.在线性表的哈希存储中,装填因子α又称为装填系数,若用m表示哈希表的长度,n表示线性表中的元素的个数,则α等于____________。

9.对线性表{18,25,63,50,42,32,90}进行哈希存储时,若选用H(k)=k%9作为哈希函数,则哈希地址为0的元素有____________个,哈希地址为5的元素有________个。

三、判断题

1.折半查找法要求待查表的关键字必须有序。()

2.散列法是一种将关键字转换为存储地址的存储方法。()

3.在二叉排序树中,根结点的值都小于孩子结点的值。()

4.对有序表而言,采用折半查找总比采用顺序查找法速度快。()

5.二叉排序树是一种特殊的线性表。()

6.哈希表的查找效率主要取决于散列表构造时选取的散列和处理冲突的方法。()

7.一般来说,用散列函数得到的地址,冲突不可能避免,只能尽可能减少。()

8.对于满足折半查找和分块查找条件的文件而言,无论它存放在何种介质上,均能进行顺序查找、折半查找和分块查找。()

9.即使排序算法是不稳定的,但该算法仍有实际应用价值。()

10.直接插入排序时,关键字的比较次数与记录的初始排列无关。()

11.排序要求数据一定要按顺序方式存储。()

12.对于两棵具有相同关键字但形状不同的二叉排序树,按中序遍历它们得到的序列的顺序是一样的。

()

四、应用题

1.已知序列{35,24,16,78,22,15,29,70,54,31,20,90,77,24},

(1)画出用这个序列生成的二叉排序树;

(2)在原图中如果删除15,有几种情况,将删除后二叉排序树画出;

(3)在原图中如果删除22,有几种情况,将删除后二叉排序树画出;

(4)在原图中如果删除78,有几种情况,将删除后二叉排序树画出。

2.设有一组关键字{9,1,23,14,55,20,80,27},采用哈希函数:H(key)=key%7 ,表长为10,用开放地址法的二次探测再散列方法Hi=(H(key)+di)%10(di=12, -12,22,-22,…)解决冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。

3.已知关键字集{30,15,21,40,25,26,36,37},若查找表的装填因子为0.8,设哈希函数为:H(Key)=Key%9,采用线性探测再散列方法解决冲突,求:

(1)画出哈希表;

(2)计算查找成功和查找失败的平均查找长度;

4.假定对有序表{3,4,5,7,24,30,42,54,63,72,87,95}进行折半查找,试回答下列问题:

(1)画出描述折半查找过程的判定树;

(2)若查找元素54,需依次与那些元素比较?

(3)若查找元素90,需依次与那些元素比较?

5.使用散列函数H(x)=x%10,把一个整数值转换成散列表下标,现要把序列{1,13,12,34,38,33,27,22}插入到散列表中。

(1)使用链地址法构造散列表并画出链地址法的散列表。

(2)确定其装填因子,查找成功的平均查找长度,以及查找不成功的平均查找长度。

习题9

一、选择题

1.从末排序的序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在排序序列的合适位置,该排序方法称为()排序法。

A.插入B.选择C.希尔D.二路归并

2.下面各种排序方法中,最好情况下时间复杂度为O(n)的是()

A.快速排序B.直接插入排序C.堆排序D.归并排序

3.用某种排序方法对线性表{25,84,21,47,15,27,68,35,20}进行排序时,无序序列的变化情况如下:

25 84 21 47 15 27 68 35 20

20 15 21 25 47 27 68 35 84

15 20 21 25 35 27 47 68 84

15 20 21 25 27 35 47 68 84

则所采用的排序方法是()

A.选择排序B.希尔排序C.归并排序D.快速排序

4.下面给出的四种排序法中,()排序是不稳定排序法。

A.插入B.冒泡C.二路归并D.堆

5.快速排序方法在()情况下最不利于发挥其长处。

A.要排序的数据量太大

B.要排序的数据中含有多个相同值

C.要排序的数据已基本有序

D.要排序的数据个数为奇数

6.一组记录的关键码为{46,79,56,38,40,84},则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()

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

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

7.对记录的关键码{50,26,38,80,70,90,8,30,40,20}进行排序,各趟排序结束时的结果为:

50,26,38,80,70,90 ,8,30,40,20

50,8,30,40,20,90,26,38,80,70

26,8,30,40,20,80,50,38,90,70

8,20,26,30,38,40,50,70,80,90

其使用的排序方法是()

A.快速排序B.基数排序C.希尔排序D.归并排序

8.在文件“局部有序”或文件长度较小的情况下,最佳内部排序方法是()

A.直接插入排序B.冒泡排序C.简单选择排序D.归并排序

9.在下列算法中,()算法可能出现下列情况:在最后一趟开始之前,所有的元素都不在其最终的位置上。A.堆排序B.冒泡排序C.插入排序D.快速排序

10.设有5000个无序的元素,希望用最快速度挑选出其中前10个最大的元素,在以下的排序方法中,采用

()方法最好

A.快速排序B.堆排序C.基数排序D.插入排序

11.对给出的一组关键字{14,5,19,20,11,19}。若按关键字非递减排序,第一趟排序结果为{14,5,19,20,11,19},问采用的排序算法是()

A.简单选择排序B.快速排序C.二路归并排序D.希尔排序

12.以下序列不是堆的是()

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

13.下面排序方法中,关键字比较次数与记录的初始排列无关的是()

A.希尔排序B.直接选择排序C.直接插入排序D.冒泡排序

14.一组记录的关键字为{45,80,55,40,42,85},则利用堆排序的方法建立的初始堆为()

A.80,45,50,40,42,85 B.85,80,55,40,42, 45

C.85,80,55,45,42,40 D.85,55,80,42,45,40

15.一组记录的关键字为{25,50,15,35,80,85,20,40,36,70},其中含有5个长度为2的有序表,用归并排序方法对该序列进行一趟归并后的结果为()

A.15,25,35,50,20,40,80,85,36,70

B.15,25,35,50,80,20,85,40,70,36

C.15,25,50,35,80,85,20,36,40,70

D.15,25,35,50,80,20,36,40,70,85

16.n个元素进行冒泡排序的过程中,最好情况下的时间复杂度为()

A.O(1) B.O(log2n) C.O(n2) D.O(n)

17.n个元素进行快速排序的过程中,第一次划分最多需要移动()次元素(包括开始将基准元素移到临时变量的那一次)。

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

18.下述几种排序方法中,要求内存量最大的是()

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

19.下面排序方法中,时间复杂度不是O(n2)的是()

A.直接插入排序B.二路归并排序

C.直接选择排序D.冒泡排序

20.对下列4个序列用快速排序方法进行排序,以序列的第1个元素为基准进行划分。在第1趟划分过程中,元素移动次数最多的是序列()

A.70,75,82,90, 23,16,10,68

B.70,75,68,23,10,16,90,82

C.82,75,70,16,10,90,68,23

D.23,10,16,70,82,75,68,90

21.对一组数据{84,47,25,15,21}排序,数据的排列次序在排序的过程中的变化为:

(1)84 47 25 15 21 (2)15 47 25 84 21 (3)15 21 25 84 47 (4)15 21 25 47 84

则采用的排序是( )。

A.选择B.冒泡C.快速D.插入

22.序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序。

A.选择B.快速C.希尔D.冒泡

23.若上题的数据经一趟排序后的排列为{9,15,7,8,20,-1,4},则采用的是()排序。

A.选择B.堆C.直接插入D.冒泡

24.用直接插入排序方法对下面四个序列进行排序(由小到大),元素比较次数最少的是()。

A.94,32,40,90,80,46,21,69 B.32,40,21,46,69,94,90,80

C.21,32,46,40,80,69,90,94 D.90,69,80,46,21,32,94,40

25.一组记录的关键码为{46,79,56,38,40,84},则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。

A.{38,40,46,56,79,84} B.{40,38,46,79,56,84}

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

26.下列四个序列中,哪一个是堆()。

A.75,65,30,15,25,45,20,10

B.75,65,45,10,30,25,20,15

C.75,45,65,30,15,25,20,10

D.75,45,65,10,25,30,20,15

27.对关键字序列{28,16,32,12,60,2,5,72}快速排序,从小到大一次划分结果为()。

A.(2,5,12,16)28(60,32,72) B.(5,16,2,12)28(60,32,72)

C.(2,16,12,5)28(60,32,72) D.(5,16,2,12)28(32,60,72)

28.下列排序算法中,其中()是稳定的。

A.堆排序,冒泡排序B.快速排序,堆排序

C.直接选择排序,归并排序D.归并排序,冒泡排序

二、填空题

1.每次从无序子表中取出一个元素,把它插入到有序子表中的适当位置,此种排序方法叫做__________排序;每次从无序子表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做__________排序。2.每次直接或通过支点元素间接比较两个元素,若出现逆序排列时就交换它们的位置,此种排序方法叫

__________排序;每次使两个相邻的有序表合并成一个有序表的排序方法叫做__________排序。

3.假定一组记录为{46,79,56,38,40,84},对其进行快速排序的第一次划分后,右区间内元素的个数为________。4.在所有的排序方法中,__________排序方法采用的是二分法的思想。

5.在所有的排序方法中,__________排序方法使数据的组织采用的是完全二叉树的结构。

6.当数据量特别大需借助外部存储器对数据进行排序,则这种排序称为____________。

7.对n个元素的序列进行冒泡排序,最少的比较次数是__________,此时元素的排列情况为__________,在

__________情况下比较次数最多,其比较次数为__________。

8.希尔排序是把记录按下标的一定增量分组,对每组记录进行直接插入排序,随着增量__________,所分成的组

数据结构与算法复习题10(C语言版)

习 9解答 判断题: 1.用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度。 答:FALSE (错。链表表示的有序表不能用折半查找法。) 2.有n 个数据放在一维数组A[1..n]中,在进行顺序查找时,这n 个数的排列有序或无序其平均查找长度不同。 答:FALSE (错。因顺序查找既适合于有序表也适合于无序表;对这两种表,若对于每个元素的查找概率相等,则顺序查找的ASL 相同,并且都是(n+1)/2;对于查找概率不同的情况,则按查找概率由大到小排序的无序表其ASL 要比有序表的ASL 小。) 3.折半查找是先确定待查有序表记录的范围,然后逐步缩小范围,直到找到或找不到该记录为止。( ) 答:TRUE 4.哈希表的查找效率主要取决于哈希表哈希表造表时选取的哈希函数和处理冲突的方法。 答:TRUE 5.查找表是由同一类型的数据元素(或记录)构成的集合。 答:TRUE 单选题: 6.对于18个元素的有序表采用二分(折半)查找,则查找A[3]的比较序列的下标为( )。 A. 1、2、3 B. 9、5、2、3 C. 9、5、3 D.9、4、2、3 答:D (第一次??2/)181(+ = 9,第二次??2/)81(+ = 4,第三次??2/)31(+ = 2, (第四次??2/)33(+ = 3,故选D. 7. 顺序查找法适合于存储结构为____________的线性表。 A.散列存储 B.顺序存储或链式存储 C.压缩存储 D.索引存储 答:B 8.对线性表进行二分查找时,要求线性表必须( )。 A .以顺序方式存储 B. 以链接方式存储 C .以顺序方式存储,且结点按关键字有序排序 D. 以链接方式存储,且结点按关键字有序排序 答:C 9.设哈希表长m=14,哈希函数为H(k) = k MOD 11。表中已有4个记录(如下图

数据结构与算法习题及答案

第1章绪论 习题 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 3.简述逻辑结构的四种基本关系并画出它们的关系图。 4.存储结构由哪两种基本的存储方法实现 5.选择题 (1)在数据结构中,从逻辑上可以把数据结构分成()。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 (2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。 A.存储结构B.存储实现 C.逻辑结构D.运算实现 (3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。 A.数据具有同一特点 B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等 (4)以下说法正确的是()。 A.数据元素是数据的最小单位 B.数据项是数据的基本单位 C.数据结构是带有结构的各数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 (5)以下与数据的存储结构无关的术语是()。 A.顺序队列B.链表C.有序表D.链栈 (6)以下数据结构中,()是非线性数据结构 A.树B.字符串C.队D.栈 6.试分析下面各程序段的时间复杂度。 (1)x=90;y=100; while(y>0) if(x>100) {x=x-10;y--;} elsex++; (2)for(i=0;i

数据结构与算法C语言版期末复习题

《数据结构与算法》期末复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

北京交通大学数据结构与算法期末测验考试参考答案

北京交通大学考试试题(A卷) 课程名称:数据结构与算法2011-2012学年第一学期出题教师:张勇 (请考生注意:(1)本试卷共有六道大题,(2)答案一律写在答题纸上,(3)试卷不得带出考场) 1. 在顺序表中访问任意一个元素的时间复杂度均为,因此顺序表也称为 的数据结构。 2.三维数组a[4][3][2](下标从0开始),假设a[0][0][0]的地址为50,数据以行序优先方式存储,每个元素的长度为2字节,则a[2][1][1]的地址是。 3. 直接插入排序用监视哨的作用是。 4. 已知广义表Ls=(a, (b, c), (d, e)), 运用head和tail函数取出Ls中的原子d的运算 是。 5.对有14个元素的有序表A[1..14]进行折半查找,当比较到A[4]时算法结束。被比较元素除A[4]外,还有。 6. 在AOV网中,顶点表示,边表示。 7. 有向图G可进行拓扑排序的判别条件是。 8. 若串S1=‘ABCDEFGHIJK’,S2=‘451223’,S3=‘####’,则执行 Substring(S1,Strlength(S3),Index(S2,‘12’,1))的结果是。 二、选择题(每空2分,共20分) 1.在下列存储形式中,哪一个不是树的存储形式?() A.双亲表示法B.孩子链表表示法 C.孩子兄弟表示法D.顺序存储表示法 2.查找n个元素的有序表时,最有效的查找方法是()。 A.顺序查找B.分块查找 C.折半查找D.二叉查找 3.将所示的s所指结点加到p所指结点之后,其语句应为()。 p (A) s->next=p+1 ; p->next=s;

(B) (*p).next=s; (*s).next=(*p).next; (C) s->next=p->next ; p->next=s->next; (D) s->next=p->next ; p->next=s; 4. 在有向图的邻接表存储结构中,顶点v 在链表中出现的次数是( )。 A. 顶点v 的度 B. 顶点v 的出度 C. 顶点v 的入度 D. 依附于顶点v 的边数 5. 算法的时间复杂度为O (nlog 2n )、空间复杂度为O(1)的排序算法是( )。 A. 堆排序 B. 快速排序 C. 归并排序 D.直接选择 6. 设矩阵A 是一个对称矩阵,为了节省存储,将其 下三角部分(如右图所示)按行序存放在一维数组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素ai,j(i ≤j), 在一维数组B 中下标k 的值是( ): A.i(i-1)/2+j-1 B.i(i-1)/2+j C.i(i+1)/2+j-1 D.i(i+1)/2+j 7. 由一个长度为11的有序表,按二分查找法对该表进行查找,在表内各元素等概率情 况下,查找成功的平均查找长度是( )。 A .29/11 B. 31/11 C. 33/11 D.35/11 8. AVL 树是一种平衡的二叉排序树,树中任一结点的( )。 A. 左、右子树的高度均相同 B. 左、右子树高度差的绝对值不超过1 C. 左子树的高度均大于右子树的高度 D. 左子树的高度均小于右子树的高度 9. 下列四种排序方法中,不稳定的方法是( )。 A. 直接插入排序 B. 冒泡排序 C. 归并排序 D. 堆排序 10. 设树的度为4,其中度为1,2,3,4的结点个数分别为4, 2, ,1, 1, 则T 中的叶子数为 ( )。 A .5 B .6 C .7 D .8 三、 判断题(10分,每小题1分) 1. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( ) 2. 数组不适合作任何二叉树的存储结构。( ) 3. 广义表的取表尾运算,其结果通常是个表,但有时也可是个原子。( ) 4. 在含有n 个结点的树中,边数只能是n-1条。( ) 5. 所谓一个排序算法是否稳定,是指该算法在各种情况下的效率是否相差不大。( ) 6. 简单选择排序在最好情况下的时间复杂度为O(n)。( ) 7. 在二叉排序树中插入一个新结点,总是插入到叶结点下面。( ) 8. 采用线性探测处理冲突,当从哈希表中删除一个记录时,不应将该记录所在位置置 空,因为这会影响以后的查找。( ) 9. 有n 个数存放在一维数组A[1..n]中,在进行顺序查找时,这n 个数的排列有序或无 ?????? ? ???? ? ??=n n n n a a a a a a A ,2,1,2 ,21,21 ,1Λ Λ

计算机学院数据结构与算法分析期末试题(2007级B)_无答案

四川大学期末考试试题 (2008-2009学年第1学期) 课程号:课程名称:数据结构与算法分析(B卷)任课教师: 1.数据类型为()。 A)数据项的集合B)值的集合及定义在其上的一组操作的总称 C)数据元素的集合D)关键字的集合 2.链表不具有的特点是()。 A)可随机直接访问任一元素B)插入删除不需要移动元素 C)不必事先估计元素个数D)所需空间与线性表长度成正比 3.设一个栈的入栈序列是ABCD,则借助于一个栈所得到的出栈序列不可能是()。 A)ABCD B)DCBA C)ABCD D)DABC 4.将对称矩阵A nxn压缩存储在一维数组B[m]中,则m的值至少为()。 A)n(n+1)/2 B)n(n-1)/2 C)n(n+1) D)n2 5.设二叉树中有n2个度为2的结点,n1个度为1的结点,n0个叶子结点,则此二叉树中空指针域个数为()。 A)n0+n1+n2 B)n2+n1+2n0 C)2n2+n1D)2n0+n1 6.对于具有n个顶点的强连图,其弧条数的最小值为()。 A)n+1 B)n C)n-1 D)n-2 7.一棵深度为k的平衡二叉树,其每个非终端结点的平衡因子均为0,则该树共有()个结点。 A)2k-1-1 B)2k-1C)2k-1+1 D)2k-1 8.归并排序的时间复杂度是()。 A)O(1) B)O(n) C)O(n2) D)O(nlogn) 9.每一趟都能选出一个元素放在其最终位置上,并且不稳定的排序算法是()。 A)冒泡排序B)简单选择排序C)希尔排序D)直接插入排序10.按照二叉树的定义,具有3个结点的不同形态(相似)的二叉树有()种。 A)3 B)4 C)5 D)6 二、(本题10分) 利用两个栈S1、S2模拟一个队列(如客户队列)时,如何用栈的运算实现队列的插入、删除运算,请简述算法思想。 三、(本题10分) 已知一棵二叉树的先序序列与中序序列分别如下,试画出此二叉树。 先序序列:ABCDEFGH IJ 中序序列:CBEDAGHFJI 注:试题字迹务必清晰,书写工整。本题2页,本页为第1页 教务处试题编号:

数据结构与算法复习题及参考答案

复习题集─参考答案 一判断题 (√)1. 在决定选取何种存储结构时,一般不考虑各结点的值如何。 (√)2. 抽象数据类型与计算机部表示和实现无关。 (×)3. 线性表采用链式存储结构时,结点和结点部的存储空间可以是不连续的。 (×)4. 链表的每个结点中都恰好包含一个指针。 (×)5.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。(×)6. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 (×)7. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。 (×)8. 线性表在物理存储空间中也一定是连续的。 (×)9. 顺序存储方式只能用于存储线性结构。 (√)10.栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。 (√)11.对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。 (√)12.栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。 (√)13.两个栈共享一片连续存空间时,为提高存利用率,减少溢出机会,应把两个栈的栈底分别设在这片存空间的两端。 (×)14.二叉树的度为2。 (√)15.若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。 (×)16.二叉树中每个结点的两棵子树的高度差等于1。 (√)17.用二叉链表法存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。 (√)18.具有12个结点的完全二叉树有5个度为2的结点。 (√)19.二叉树的前序遍历序列中,任意一个结点均处在其孩子结点的前面。 (×)20.在冒泡法排序中,关键值较小的元素总是向前移动,关键值较大的元素总是向后移动。 (×)21.计算机处理的对象可以分为数据和非数据两大类。[计算机处理的对象都是数据] (×)22.数据的逻辑结构与各数据元素在计算机中如何存储有关。 (×)23.算法必须用程序语言来书写。 (×)24.判断某个算法是否容易阅读是算法分析的任务之一。 (×)25.顺序表是一种有序的线性表。[任何数据结构才用顺序存储都叫顺序表] (√)26.分配给顺序表的存单元地址必须是连续的。 (√)27.栈和队列具有相同的逻辑特性。[它们的逻辑结构都是线性表] (√)28.树形结构中每个结点至多有一个前驱。 (×)29.在树形结构中,处于同一层上的各结点之间都存在兄弟关系。 (×)30.如果表示图的邻接矩阵是对称矩阵,则该图一定是无向图。 (×)31.如果表示图的邻接矩阵是对称矩阵,则该图一定是有向图。 (×)32.顺序查找方法只能在顺序存储结构上进行。 (×)33.折半查找可以在有序的双向链表上进行。

数据结构与算法复习题库含答案

数据结构复习题 第一章概论 一、选择题 1、研究数据结构就是研究( D )。 A. 数据的逻辑结构 B. 数据的存储结构 C. 数据的逻辑结构和存储结构 D. 数据的逻辑结构、存储结构及其基本操作 2、算法分析的两个主要方面是( A )。 A. 空间复杂度和时间复杂度 B. 正确性和简单性C. 可读性和文档性 D. 数据复杂性和程序复杂性 3、具有线性结构的数据结构是( D )。 A. 图 B. 树 C. 广义表 D. 栈 4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。 A. 可执行性、可移植性和可扩充性 B. 可执行性、有穷性和确定性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是( C )。 fori0;im;i++ forj0;jn;j++ a[i][j]i*j; A. Om2 B. On2 C. Om*n D. Om+n 6、算法是( D )。

A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示( C )。 A. On B. Onlog2n C. On2 D. Olog2n 8、下面程序段的时间复杂度为( C )。 i1; whilein ii*3; A. On B. O3n C. Olog3n D. On3 9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的( B )和运算等的学科。 A. 结构 B. 关系 C. 运算 D. 算法 10、下面程序段的时间复杂度是( A )。 is0; whilesn i++;s+i; A. On B. On2 C. Olog2n D. On3 11、抽象数据类型的三个组成部分分别为( A )。 A. 数据对象、数据关系和基本操作 B. 数据元素、逻辑结构和存储结构 C. 数据项、数据元素和数据类型 D. 数据元素、数据结构和数据类型 12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是(D)。

数据结构与算法分析习题与参考答案

大学 《数据结构与算法分析》课程 习题及参考答案 模拟试卷一 一、单选题(每题 2 分,共20分) 1.以下数据结构中哪一个是线性结构?( ) A. 有向图 B. 队列 C. 线索二叉树 D. B树 2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点, 则执行如下( )语句序列。 A. p=q; p->next=q; B. p->next=q; q->next=p; C. p->next=q->next; p=q; D. q->next=p->next; p->next=q; 3.以下哪一个不是队列的基本运算?() A. 在队列第i个元素之后插入一个元素 B. 从队头删除一个元素 C. 判断一个队列是否为空 D.读取队头元素的值 4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成( ) 个不同的字符串? A.14 B.5 C.6 D.8 5.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。 以下6-8题基于图1。 6.该二叉树结点的前序遍历的序列为( )。 A.E、G、F、A、C、D、B B.E、A、G、C、F、B、D C.E、A、C、B、D、G、F D.E、G、A、C、D、F、B 7.该二叉树结点的中序遍历的序列为( )。 A. A、B、C、D、E、G、F B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F E.B、D、C、A、F、G、E 8.该二叉树的按层遍历的序列为( )。

A.E、G、F、A、C、D、B B. E、A、C、B、D、G、F C. E、A、G、C、F、B、D D. E、G、A、C、D、F、B 9.下面关于图的存储的叙述中正确的是( )。 A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关 C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关 D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建 堆的结果?( ) A. a,g,h,m,n,p,q,x,z B. a,g,m,h,q,n,p,x,z C. g,m,q,a,n,p,x,h,z D. h,g,m,p,a,n,q,x,z 二、填空题(每空1分,共26分) 1.数据的物理结构被分为_________、________、__________和___________四种。 2.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为_________, 在表尾插入元素的时间复杂度为____________。 3.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是________________; 删除一个结点时,需要执行的操作是______________________________(假设栈不空而 且无需回收被删除结点)。 4.对于一棵具有n个结点的二叉树,一个结点的编号为i(1≤i≤n),若它有左孩子则左 孩子结点的编号为________,若它有右孩子,则右孩子结点的编号为________,若它有 双亲,则双亲结点的编号为________。 5.当向一个大根堆插入一个具有最大值的元素时,需要逐层_________调整,直到被调整 到____________位置为止。 6.以二分查找方法从长度为10的有序表中查找一个元素时,平均查找长度为________。 7.表示图的三种常用的存储结构为_____________、____________和_______________。 8.对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K %7 作为散列函数,则散列地址为0的元素有________个,散列地址为6的有_______个。 9.在归并排序中,进行每趟归并的时间复杂度为______,整个排序过程的时间复杂度为 ____________,空间复杂度为___________。 10.在一棵m阶B_树上,每个非树根结点的关键字数目最少为________个,最多为________ 个,其子树数目最少为________,最多为________。 三、运算题(每题 6 分,共24分) 1.写出下列中缀表达式的后缀形式: (1)3X/(Y-2)+1 (2)2+X*(Y+3) 2.试对图2中的二叉树画出其: (1)顺序存储表示的示意图; (2)二叉链表存储表示的示意图。 3.判断以下序列是否是小根堆? 如果不是, 将它调 图2 整为小根堆。 (1){ 12, 70, 33, 65, 24, 56, 48, 92, 86, 33 } (2){ 05, 23, 20, 28, 40, 38, 29, 61, 35, 76, 47, 100 } 4.已知一个图的顶点集V和边集E分别为: V={1,2,3,4,5,6,7};

算法与数据结构试题及答案

数据结构模拟试题... 一、简答题(15分,每小题3分) 1.简要说明算法与程序的区别。 2.在哈希表中,发生冲突的可能性与哪些因素有关?为什么? 3.说明在图的遍历中,设置访问标志数组的作用。 4.说明以下三个概念的关系:头指针,头结点,首元素结点。 5.在一般的顺序队列中,什么是假溢出?怎样解决假溢出问题? 二、判断题(10分,每小题1分) 正确在括号内打√,错误打× ( )(1)广义表((( a ), b), c ) 的表头是(( a ), b),表尾是( c )。 ( )(2)在哈夫曼树中,权值最小的结点离根结点最近。 ( )(3)基数排序是高位优先排序法。 ( )(4)在平衡二叉树中,任意结点左右子树的高度差(绝对值)不超过1。 ( )(5)在单链表中,给定任一结点的地址p,则可用下述语句将新结点s插入结点p的后面:p->next = s; s->next = p->next; ( )(6)抽象数据类型(ADT)包括定义和实现两方面,其中定义是独立于实现的,定义仅给出一个ADT的逻辑特性,不必考虑如何在计算机中实现。 ( )(7)数组元素的下标值越大,存取时间越长。 ( )(8)用邻接矩阵法存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中结点个数有关,而与图的边数无关。 ( )(9)拓扑排序是按AOE网中每个结点事件的最早发生时间对结点进行排序。 ( )(10)长度为1的串等价于一个字符型常量。 三、单项选择题(10分, 每小题1分) 1.排序时扫描待排序记录序列,顺次比较相邻的两个元素的大小,逆序时就交换位置。这是哪种排序方法的基本思想? A、堆排序 B、直接插入排序 C、快速排序 D、冒泡排序 2.已知一个有向图的邻接矩阵表示,要删除所有从第i个结点发出的边,应该: A)将邻接矩阵的第i行删除B)将邻接矩阵的第i行元素全部置为0 C)将邻接矩阵的第i列删除D)将邻接矩阵的第i列元素全部置为0 3.有一个含头结点的双向循环链表,头指针为head, 则其为空的条件是: A.head->priro==NULL B. head->next==NULL C. head->next==head D. head->next-> priro==NULL 4. 在顺序表( 3, 6, 8, 10, 12, 15, 16, 18, 21, 25, 30 ) 中,用折半法查找关键码值11,所需的关键码比

数据结构与算法试题

数据结构与算法试题 一、单选题 1、在数据结构的讨论中把数据结构从逻辑上分为 (C ) A 内部结构与外部结构 B 静态结构与动态结构 C 线性结构与非线性结构 D 紧凑结构与非紧凑结构。 2、采用线性链表表示一个向量时,要求占用的存储空间地址(D ) A 必须就是连续的 B 部分地址必须就是连续的 C 一定就是不连续的 D 可连续可不连续 3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。 A n B n/2 C (n-1)/2 D (n+1)/2 4、在一个单链表中,若q结点就是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。 A s→link = p→link;p→link = s; B p→link = s; s→link = q; C p→link = s→link;s→link = p; D q→link = s;s→link = p; 5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。 A 起泡排序 B 堆排序 C 锦标赛排序 D 快速排序 6、设有两个串t与p,求p在t中首次出现的位置的运算叫做( B )。 A 求子串 B 模式匹配 C 串替换 D 串连接 7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放该数

组至少需要的存储字数就是( C )。 A 80 B 100 C 240 D 270 8、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。 A 栈 B 队列 C 循环队列 D 优先队列 9、一个队列的进队列顺序就是1, 2, 3, 4,则出队列顺序为( C )。 10、在循环队列中用数组A[0、、m-1] 存放队列元素,其队头与队尾指针分别为front与rear,则当前队列中的元素个数就是( D )。 A ( front - rear + 1) % m B ( rear - front + 1) % m C ( front - rear + m) % m D ( rear - front + m) % m 11、一个数组元素a[i]与( A )的表示等价。 A *(a+i) B a+i C *a+i D &a+i 12、若需要利用形参直接访问实参,则应把形参变量说明为( B )参数。 A 指针 B 引用 C 值 D 变量 13、下面程序段的时间复杂度为( C ) for (int i=0;i

全国计算机二级考试 数据结构与算法

全国计算机二级考试 第一章数据结构与算法 1.一个算法一般都可以用_____、_____ 、 _____三种控制结构组合完成。 [解析]顺序、选择(分支)、循环(重复) 一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是________。 [解析]算法的控制结构 在一般的计算机系统中,有算术运算、逻辑运算、关系运算和________四类基本的操作和运算。 [解析]数据传输 2.常用于解决“是否存在”或“有多少种可能”等类型的问题(例如求解不定方程的问题)的算法涉及基本方法是() A.列举法 B.归纳法 C.递归法 D.减半递推法 [解析]列举就是列举出所有可能性,将所有可能性统统列举出来,然后解决问题的方法。所以A 3.根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的,这是算法设计基本方法中的____。 [解析]列举法

4.通过列举少量的特殊情况,经过分析,最后找出一般的关系的算法设计思想是() A.列举法 B.归纳法 C.递归法 D.减半递推法 [解析]B 5.在用二分法求解方程在一个闭区间的实根时,采用的算法设计技术是() A.列举法 B.归纳法 C.递归法 D.减半递推法 [解析]二分法就是从一半处比较,减半递推技术也称分治法,将问题减半。所以D 6.将一个复杂的问题归结为若干个简单的问题,然后将这些较简单的问题再归结为更简单的问题,这个过程可以一直做下去,直到最简单的问题为止,这是算法设计基本方法中的___。如果一个算法P显式地调用自己则称为___。如果算法P调用另一个算法Q,而算法Q又调用算法P,则称为_____. [解析]递归法直接递归间接递归调用 7.算法中各操作之间的执行顺序称为_____。描述算法的工具通常有_____、_____ 、 _____。 [解析]控制结构传统流程图、N-S结构化流程图、算法描述语言 8.从已知的初始条件出发,逐步推出所要求的各中间结果和最后结果,这

数据结构与算法试卷(B卷)

广西科技大学2015 —2016 学年第 1 学期课程考核试题试卷 考核课程数据结构与算法( B 卷)考核班级物联网141 学生数36 印数40 考核方式闭卷考核时间120 分钟 一、单项选择题(在每小题的四个备选答案中,选出一个正确答案。每小题1分,共33分) 1、算法是()。 A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 2、一个顺序表的第一个元素的存储地址是90,每个元素的长度为2,则第8个元素的存储地址是()。 A. 102 B. 104 C. 106 D. 108 3、在一个长度为n的顺序表中删除第i个元素,需要向前移动()个元素。 A. n-i B. n-i+1 C. n-i-1 D. i+1 4、在头指针为head且表长大于1的单循环链表中,指针p指向表中某个结点,若p->next->next==head,则()。 A. p指向头结点 B. p指向尾结点 C. p的直接后继是头结点 D. p的直接后继是尾结点 5、在以下的叙述中,正确的是()。 A. 线性表的顺序存储结构优于链表存储结构 B. 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况 C. 线性表的链表存储结构适用于频繁插入/删除数据元素的情况 D. 线性表的链表存储结构优于顺序存储结构 6、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入一个结点s,则执行()。 A. s->next=p->next; p->next=s; B. p->next=s->next; s->next=p; C. q->next=s; s->next=p; D. p->next=s; s->next=q; 7、在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是()。 A. p->next=q; q->prior=p; p->next->prior=q; q->next=q; B. p->next=q; p->next->prior=q; q->prior=p; q->next=p->next; C. q->prior=p; q->next=p->next; p->next->prior=q; p->next=q; D. q->next=p->next; q->prior=p; p->next=q; p->next=q; 8、在单链表中,指针p指向元素为x的结点,实现删除x的后继的语句是()。 A. p=p->next; B. p->next=p->next->next; C. p->next=p; D.p=p->next->next; 9、在表长为n的顺序表中,当在任何位置删除一个元素的概率相同时,删除一个元素所需移动的平均个数为()。 A. (n-1)/2 B. n/2 C. (n+1)/2 D. n 10、将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为()。 A. O(1) B. O(n) C. O(m) D. O(m+n) 11、线性表的顺序存储结构是一种()存储结构。 A. 随机存取 B. 顺序存取 C. 索引存取 D. 散列存取 12、循环链表的主要优点是()。 A. 不再需要头指针 B. 已知某结点位置后能容易找到其直接前驱 C. 在进行插入、删除运算时能保证链表不断开 D. 在表中任一结点出发都能扫描整个链表 13、在下列对顺序表进行的操作中,算法时间复杂度为O(1)的是()。

数据结构与算法上海第二工业大学二工大期末考试试卷

选择题: 1、在数据结构中,线性结构中元素之间存在____关系。 A: 一对一 B: 一对多 C: 多对一 D: 多对多 2、数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的____和运算等的学科。 A: 结构 B: 关系 C: 操作 D: 算法 3、算法分析的两个主要方面是____。 A: 空间复杂度和时间复杂度 B: 正确性和简明性 C: 可读性和文档性 D: 数据复杂性和程序复杂性 4、顺序表中逻辑上相邻的节点其物理位置也____。 A: 一定相邻 B: 不必相邻 C: 按某种规律排列 D: 无要求 5、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。 A: s->next=p->next; p->next=s; B: p->next=s->next; s->next=p; C: q->next=s; s->next=p; D: p->next=s; s->next=q; 6、一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是____。 A: edcba B: decba C: dceab D: abcde 7、循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是____。 A: (rear-front+m)%m B: rear-front+1 C: rear-front-1 D: rear-front 8、关于空格串,下列说法中正确的有____。 A: 空格串就是空串

B: 空格串是零个字符的串 C: 空格串的长度为零 D: 空格串的长度就是其包含的空格个数 9、数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为____。A: SA+140 B: SA+144 C: SA+222 D: SA+225 10、对于一棵满二叉树,m个树叶,n个节点,深度为h,则____。 A: n=h+m B: h+m=2n C: m=h-1 D: n=2h-1 11、具有65个结点的完全二叉树其深度为____。(根的层次号为1) A: 8 B: 7 C: 6 D: 5 12、满二叉树____二叉树。 A: 一定是完全 B: 不一定是完全 C: 不是 D: 不是完全 13、将一棵有100个节点的完全二叉树从上到下,从左到右依次对节点进行编号,根节点的编号为1,则编号为49的节点的左孩子编号为____。 A: 99 B: 98 C: 50 D: 48 14、如果T2是由森林T转换而来的二叉树,那么T中结点的后序遍历就是T2中结点的____。A: 先序遍历 B: 中序遍历 C: 后序遍历 D: 层次遍历 15、将递归算法转换成对应的非递归算法时,通常需要使用____。 A: 栈 B: 队列 C: 链表 D: 树 16、如果某二叉树的前序为stuwv,中序为uwtvs,那么该二叉树的后序为____。 A: uwvts B: vwuts C: wuvts

数据结构与算法各章试题

一、选择题 1. 算法的计算量的大小称为计算的()。 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于() A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(1),它必须具备(2)这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 4.一个算法应该是()。A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C. 5. 下面关于算法说法错误的是() A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是()(1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为()两大类。 A.动态结构、静态结构B.顺序结构、链式结构 C.线性结构、非线性结构D.初等结构、构造型结构 8.以下与数据的存储结构无关的术语是()。 A.循环队列 B. 链表 C. 哈希表 D. 栈 9.以下数据结构中,哪一个是线性结构()? A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串 10.以下那一个术语与数据的存储结构无关?()】 A.栈 B. 哈希表 C. 线索树 D. 双向链表 11.在下面的程序段中,对x的赋值语句的频度为()】 FOR i:=1 TO n DO FOR j:=1 TO n DO x:=x+1; A.O(2n) B.O(n) C.O(n2) D.O(log2n) 12.程序段FOR i:=n-1 DOWNTO 1 DO FOR j:=1 TO i DO IF A[j]>A[j+1] THEN A[j]与A[j+1]对换; 其中n为正整数,则最后一行的语句频度在最坏情况下是() A. O(n) B. O(nlogn) C. O(n3) D. O(n2) 】 13.以下哪个数据结构不是多型数据类型()】 A.栈B.广义表C.有向图D.字符串 14.以下数据结构中,()是非线性数据结构】

数据结构与算法模拟试卷五

《数据结构与算法》模拟试卷五 一、名词解释(5*3=15分) 数据结构完全二叉数 AOE网队列拓扑排序 二、填空题(1*16=16分) 1.在一个长度为n的循环链表中,删除其元素值为x的结点的时间复杂度为 ______。 2.已知指针p指向某单链表中的一个结点,则判别该结点有且仅有一个后继结点 的条件是______。 3.如果入栈序列是1,3,5,…,97,99,且出栈序列的第一个元素为99,则出 栈序列中第30个元素为______。 4.一种抽象数据类型包括______和______两个部分。 5.线性表的链式存储方式中,每个结点包括两个域,分别是______和______ 。 6.在以HL为表头指针的带表头附加结点的单链表和循环单链表中,判断链表为 空的条件分别为单链表中______ 和 ______ 。 7.在一棵二叉树中,度为0的结点的个数是10,则度为2的结点个数是_________ 8.一个有n个结点的二叉树的深度最大为___________,最小为__________ 9.n个定点的连通图至少有_______条边。 10.二分查找的存储结构仅限于________,且是__________ 11.在对一组记录(54,38,96,72,60,15,60,45,83)进行直接插入排序时, 当把第6个记录60插入到有序表时,为寻找插入位置需比较________次。 三、选择题(1*10=10分) 1.在一个不带头结点的单链表HL中,若要向表头插入一个由指针p指向的结点, 则执行 _______。 A、HL=p; p->next=HL; B、p->next=HL; HL=p; C、p->next=HL; p=HL; D、p->next=HL->next; HL->nxet=p; 2.在一个长度为n的顺序存储的线性表中,删除第i个元素(1≤i≤n+1)时, 需要从前向后依次移动_______个元素。 A、n-i B、n-i+1 C、n-i-1 D、i 3.在一个顺序队列中,队首指针指向队首元素的_______位置。 A、当前 B、后一个 C、前一个 D、后面 4.计算递归函数如不用递归过程通常借助的数据结构是____。 A、线性表 B、双向队列 C、树 D、栈 5.如果T2是由有序树T转换来的二叉树,则T中结点的后序排列是T2结点的 ____。 A、先序排列 B、中序排列 C、后序排列 D、层序排列 6.栈的插入和删除操作在_____进行。

软件学院数据结构与算法分析期末试题(2006级B)

四川大学期末考试试题 (2007-2008学年第1学期) 课程号:课程名称:数据结构与算法分析(B卷)任课教师:适用专业年级:06级软件工程学号:姓名: (1)The primary purpose of most computer programs is a) to perform a mathematical calculation. b) to store and retrieve information. c) to sort a collection of records. d) all of the above. (2)Assume that P contains n elements. The number of sets in the powerset of P is a) n b) n^2 c) 2^n d) 2^n - 1 e) 2^n + 1 (3)Pick the growth rate that corresponds to the most efficientalgorithm as n gets large: a) 5n b) 20 log n c) 2n^2 d) 2^n (4)A sequence has the following properties: a) May have duplicates, element have a position. b) May have duplicates, elements do not have a position. c) May not have duplicates, elements have a position. d) May not have duplicates, elements do not have a position.

相关文档
最新文档