数据结构题集答案

数据结构题集答案
数据结构题集答案

数据结构题集

第一章绪论

一、单选题

1.在数据结构中,从逻辑上可以把数据结构分成【C 】。

A.动态结构和静态结构

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

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

D.内部结构和外部结构

2.数据结构在计算机内存中的表示是指【A 】。

A.数据的存储结构

B.数据结构

C.数据结构的逻辑结构

D.数据元素之间的关系

3. 【A 】是数据的最小单位,【B 】是数据的基本单位。

A.数据项

B.数据元素

C.信息项

D.表元素

4. 计算机所处理数据一般具有某种内在联系,这是指【B 】。

A.数据与数据之间存在某种关系

B.数据元素与数据元素之间存在某种关系

C.元素内部存在某种结构

D.数据项与数据项之间存在某种关系

5.算法分析的目的是【C 】。

A.找出数据结构的合理性

B.研究输入和输出的关系

C.分析算法的效率以求改进

D.分析算法的易懂性

6.在存储数据时,不仅要考虑存储各数据元素的值,而且还要存储【C 】。

A.数据处理的方法

B.数据元素的类型

C.数据元素之间的关系

D.数据的存储方法

7.算法分析的主要任务是分析【D 】。

A.算法是否具有较好的可读性

B.算法中是否存储语法错误和逻辑错误

C.算法的功能是否符合设计要求

D.算法的执行时间与问题规模之间的关系。

8.数据的运算【A 】。

A.效率与采用何种存储结构有关

B.是根据存储结构来定义的

C.有算术运算和关系运算两大类

D.必须用程序设计语言来描述

9.算法的计算量的大小称为算法的【B 】。

A.效率

B.时间复杂度

C.现实性

D.难度

10.连续存储分配时,存储单元的地址【A 】。

A.一定连续

B.一定不连续

C.不一定连续

D.部分连续,部分不连续

二、判断题

1.数据元素是数据结构的最小单位【.×】。

2.数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构【×.】。

3.数据的逻辑结构指数据元素的各数据项之间的逻辑关系【×.】。

4.算法的优劣与算法的描述语言无关,但与使用的计算机有关【.×】。

5.数据结构的抽象操作的定义与具体实现有关【.×】。

三、填空题

1.数据的逻辑结构指数据元素之间的逻辑关系。

2.一个数据结构在计算机中的表示称为存储结构。

3.数据的物理结构主要包括顺序存储结构的表示和链式存储结构的表示。

4.数据逻辑结构包括集合、线性结构、树和图四种,树结构和图结构统称为非线性结构。

5.顺序存储方法把逻辑上逻辑上相邻的元素存储在物理位置相邻的存储单元里;链式存储方法中结点间的逻辑关系是由指针域表示的。

6、数据结构研究的是逻辑结构和物理结构以及它们之间的相互关系,并对于这种结构定义相应的运算,设计出相应的算法。

7.算法的执行时间是问题规模n 的函数。

8.以下是4个算法所有语句频度之和的表达式,其中的复杂度相同的是A和B 。

A.T A(n)=2n3+3n2+1000

B.T B(n)=n3-n2log2n-1000

C.T C(n)=n2log2n+n2

D.T D(n)=n2+1000

四、解答题

1.简述数据的逻辑结构和存储结构的关系。

答:在数据结构中,逻辑结构和存储结构是密切相关的,存储结构不仅将数据元素存储到计算机中,而且还要表示各数据元素之间的逻辑关系。逻辑结构与计算机无关,存储结构是数据元素之间的关系在计算机中的表示。通常情况下,一种逻辑结构可以有多种存储结构,例如,线性结构可以采取顺序存储结构或链式存粗结构表示。

2.数据结构和数据类型有什么区别?

答:数据结构是相互间存在一种或多种特定关系的数据元素的集合,一般包括三个方面的内容:数据的逻辑结构、存储结构和多数据的运算。数据类型是一个值得集合和定义在这个值集上的一组操作的总称。数据结构重点考虑元素之间的关系,数据类型重点考虑数据的个体特征。

3.当为解决某一问题已经选定其数据的逻辑结构后,选择数据的存储结构时,应从哪些方面考虑?

答:通常从两个方面考虑:第一是算法实现的存储空间复杂度;第二是算法执行的时间复杂度。若存储空间难以确定,宜选择链式存储结构,否则选择顺序存储结构。若插入、删除操作频繁,则选链式存储结构,否则选择顺序存储结构。

第二章线性表

一、单选题

1.链表不具备的特点是【A 】。

A.可随机访问任一结点

B.插入删除不需要移动元素

C.不必事先估算存储空间

D.所需空间与其长度成正比

2.设线性表有n个元素,以下操作中,【A 】在顺序表上实现比在链表上实现效率更高。

A.输出第i(1≤i≤n)个元素的值

B.顺序输出这n个元素

C.交换第1个与第2个元素的值

D.输出与给定值x相等的元素在线性表中的序号

3.如果最常用的操作是取第i个结点及其前驱,则采用【D 】存储方法最节省时间。

A.单链表

B.双链表

C.线性链表

D.顺序表

4.线性表是具有n个【C 】的有限序列(n≥0)。

A.表元素

B.字符

C.数据元素

D.数据项

5.下面关于线性表的叙述中,错误的是【B 】。

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

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

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

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

6. 线性表的顺序存储结构是一种【A 】。

A.随机存取的存储结构

B.顺序存取的存储结构

C.索引存取的存储结构

D.Hash存取的存储结构

7.单链表中增加一个头结点的目的是为了【C 】。

A.使单链表至少有一个结点

B.标识表首结点的位置

C.方便运算的实现

D.说明单链表是线性表的链式存储

8.不带头结点的单链表(头指针为h)为空的条件是【A 】。

A.h==NULL

B.h->next==NULL

C.h->next==h

D.h!=NULL

9. 带头结点的单链表(头指针为h)为空的条件是【B 】。

A.h==NULL

B.h->next==NULL

C.h->next==h

D.h!=NULL

10.带头结点的循环双向链表(头指针为L)为空的条件是【D 】。

A.L==NULL

B.L->next->prior==NULL

C.L->prior==NULL

D.L->next==L

11.非空的循环单链表(头指针为head)的尾结点(由p指向)满足【C 】。

A.p->next==NULL

B.p==NULL

C.p->next==head

D.p==head

12.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用【A 】最节省时间。

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

B.单循环链表

C.带尾指针的单循环链表

D.单链表

13.若某线性表最常用的操作存取任意指定序号的元素和在表尾进行插入和删除,则选用【A 】的存储方式最节省时间。

A.顺序表

B.双链表

C.带头结点的双循环链表

D.单循环链表

14.在n个结点的线性表的顺序实现中,算法的时间复杂度为O(1)的操作是【A】。

A.访问第i个结点和求第i个结点的直接前驱

B.在第i个结点后插入一个新结点

C.删除第i个结点

D.以上都不对

15.若长度为n的线性表采用顺序存储结构,在第i个位置插入一个新元素的算法的时间复杂度为【C 】。

A.O(0)

B.O(1)

C.O(n)

D.O(n2)

16.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为【C 】。

A.O(n)O(n)

B.O(n)O(1)

C.O(1)O(n)

D.O(1)O(1)

17. 线性表以链式方式存储,访问第i个结点的时间复杂度为【C 】。

A.O(i)

B.O(1)

C.O(n)

D.O(i-1)

18.循环链表H尾结点p的特点是【A 】。

A.p->next==H

B.p->next==H->next

C.p==H

D.p==H->next

二、判断题

【×】1.取线性表的第i个元素的时间同i的大小有关。

【×】2.线性表中每个元素都有一个直接前驱和一个直接后继。

【×】3.顺序存储方式只能用于存储线性结构。

【×】4.线性表采用链式存储时,结点和结点内部的存储空间可以不连续。

【×】5.在一个设有头指针和尾指针的单链表中,执行删除单链表最后一个结点的操作与链表的长度无关。

三、填空题

1.向一个长度为n的顺序表中的第i个元素之前插入一个元素时,需要向后移动n-i+1 个元素。

2. 在一个长度为n的顺序表中删除第i个元素时,需要向前移动n-i 个元素。

3.在单链表中设置头结点的作用是简化插入、删除算法。

4.在单链中要删除某一指定结点,必须找到该结点的直接前驱结点。

5. 访问单链表中的结点,必须沿着指针域依次进行。

6.在双链表中每个结点有两个指针域,一个指向直接前驱结点,一个指向直接后继结点。

7.在双向循环链表中,删除最后一个结点的算法时间复杂度为O(1)。

8.访问一个线性表中具有给定值的时间复杂度的数量级是O(n) 。

9.由n个数据元素生成一个顺序表,若每次都调用插入算法把一个元素插入到表头,则整个算法的时间复杂度为O(n) ,若每次都调用插入算法把一个元素插入到表尾,则整个算法的时间复杂度为O(n2) 。

10. 在双向链表中,可以用表尾指针代替表头指针。

11.根据n个数据元素建立对应的顺序表和单链表存储结构,其算法的时间复杂度最好的情况是O(n) ,最坏的情况是O(n2) 。

12.求线性表的顺序存储和链式存储的长度的算法时间复杂度分别是O(1) 和O(n) 。

13.在一个带头结点的单链表中,在表头插入或删除与在其他位置插入或删除,其操作过程是否相同?相同。

14.在一个不带头结点的单链表中,在表头插入或删除与在其他位置插入或删除,其操作过程是否相同?不相同。

四、简答题

1.阐述顺序表和链表存储方式的特点。

答:顺序表存储方式为数据分配连续的存储单元,数据元素按逻辑顺序依次存储到相应存储单元中,使得逻辑相邻的数据元素物理也相邻,因此可以实现随机访问线性表的数据元素,即数据访问的时间复杂度为O(1)。

链表存储方式分配的存储单元可以不连续,通过每个结点的指针域来表示数据元素之间的逻辑关系,只能顺序访问线性表中的数据元素。

2. 若频繁地对一个线性表进行插入和删除操作,则该线性表宜采用何种存储结构,为什么?

答:若频繁地对一个线性表进行插入和删除操作,则该线性表宜采用链式存储结构。因为链式存储结构在插入和删除数据元素时不需要移动数据元素,只需要修改结点的指针域就可以改变数据元素之间的逻辑关系。

3.在单链表、双向循环链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点p从相应的链表中删除?若可以,时间复杂度各为多少。

答:要实现删除p结点的操作,必须找到其前驱结点,修改其指针域的值使其指向p 的后继结点,以实现删除结点p。单链表不行,因为不知道头指针就无法找到结点p的前驱结点。双向循环链表和单循环链表可以可以实现删除p结点。单循环链表删除p结点的时间复杂度为O(n),双循环链表删除P结点的时间复杂度为O(1)。

4.对链表设置头结点的作用是什么?

答:对带头结点的链表,在表的任何结点之前插入结点或删除任何位置的结点,所要做的都是修改前一个结点的指针域,因为在带头结点的链表中任何元素结点都有前驱结点。如果没有头结点,在首元结点前插入结点或删除首元结点都要修改头指针,其算法要比带头结点的算法复杂些。

其次,带头结点的链表结构,初始化后的头指针就固定了,除撤销算法外,所有算法都不会修改头指针,可以减少出错的可能性。

五、算法设计题

1.已知一个线性表用含头结点的单链表做存储结构,写一个算法求单链表的长度。

解:算法基本思想:从头结点的下一个结点开发,遍历单链表的每个结点,每遇到一个结点,结点计算器加1。

int listlenght(linklist L)

{ int length=0;

P=L->next;

while(p)

{ length++;

p=p->next;

}

return(length);

}

2. 已知一个顺序表L,其中的元素按值递增有序排列,设计一个算法插入一个值为x

的元素后保持该顺序表仍然递增有序,且空间复杂度为0(1)。

void insertsq(sqlist L,elemtype x)

{ n=L.length-1;

while(n>=0&<(x,L.elem[n])

{ L.elem[n+1]=L.elem[n];

n--;

}

L.elem[n+1]=x;

}

L.lenght++;

return;

}

3.写一个算法,从顺序表中删除值为x的所有元素。

void delallsq(Sqlist &L)

{ int i=0,j=0;

while(j

{ if(L.elem[j]!=x)

L.elem[i++]=L.elem[j];

j++;

}

L.longth=i;

}

第三章栈和队列

一、单选题

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.栈的特点是【①B 】,队列的特点是【②A 】;栈和队列都是【③C 】若入栈序列是1,2,3,4 ,则【④A 】是不可能的出栈序列;若进队列的序列是1,2,3,4,则【⑤

D 】是可能的出队序列。

①②A.先进先出 B.后进先出 C.进优先于出 D.出优先于进

③A.顺序存储的线性结构 B.链式存储的线性结构

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

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

④⑤A.3,2,1,4 B.3,2,4,1 C.4,2,3,1 D.1,2,3,4

6.用单链表表示的链队列的队头在链表的【A 】。

A.链头

B.链尾

C.链中

D.都不是

7.设入栈序列为1,2,3,4,5,则可能得到的出栈序列为【C 】。

A.1,2,5,3,4

B.3,1,2,5,4

C.3,2,5,4,1

D.1,4,2,3,5

8.输入序列是ABC,若输出序列变为CBA,经过的栈操作为【B 】。

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

9. 栈在【D 】应用。

A.递归调用

B.函数调用

C.表达式求值

D.A,B,C

10.设计一个判别表达式中左、右括号是否配对的算法,采用【D 】数据结构最佳。

A.线性表的顺序存储结构

B.队列

C.线性表的链式存储结构

D.栈

11.允许对队列进行的操作有【D 】。

A.对队列中的元素排序

B.取出最近进队的元素

C.在队头之前插入元素

D.删除队头元素

12. 对于循环队列【D 】。

A.无法判断队列是否为空

B.无法判断队列是否为满

C.队列不可能满

D.以上说法都不对

13. 队列存放在A[0..M-1]中,则入队时的操作为【B 】。

A.rear=rear+1

B.rear=(rear+1)%M

C.rear=(rear+1)%(M+1)

D.rear=(rear+1)%(M-1)

14. 队列存放在A[0..M-1]中,则出队时的操作为【B 】。

A.front=front+1

B. front=(front+1)%M

C. front=(front+1)%(M+1)

D. front=(front+1)%(M-1)

15.循环队列的最大容量为M,则队空的条件是【A 】。

A.rear==front

B.(rear+1)%M==front

C.rear+1==front

D.(rear-1)%M==front

16.循环队列的最大容量为M,则队满的条件是【B 】。

A.rear==front

B.(rear+1)%M==front

C.rear+1==front

D.(rear-1)%M==front

二、判断题

【×】1.队列在函数调用时必不可少,因此递归离不开队列。

【√】2.栈和队列的存储方式,既可以是顺序方式,又可以是链式方式。

【√】3.设尾指针的循环链表表示队列,则入队和出队算法的时间复杂度为0(1)。

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

【√】5.在链队列中,即使不设置尾指针也能进行入队操作。

【√】6.栈和队列度是限制存取点的线性结构。

【×】7.即使对不含相同元素的同一输入序列进行两组不同的合法的入栈和出栈操作,所得的输出序列一定相同。

【√】8.栈是实现函数调用所必需的数据结构。

【√】9.顺序队列中的元素个数,可以根据队首指针和队尾指针的值计算出来。

三、填空题

1.循环队列的引入,目的是为了克服顺序队列的假溢出。

2.区分循环队列的空与满有3种方法,它们是少用一个元素、设空满标志、用计数器记录队列中元素个数。

3.栈和队列的区别是栈只能在表一端进行插入和删除操作,队列限制在表的一端进行插入操作,在另一端进行删除操作。

4.一个栈的输入序列是12345,则栈的输出序列43512是错误的。

5.设栈采取顺序存储结构,栈中已有i-1个元素,则第i个元素进栈操作的算法时间复杂度是O(1)。

6.若用不带头结点的单链表表示栈,则创建一个空栈要执行的操作是top=NULL 。

7.从循环队列中删除一个元素的操作是Q.front=(Q.front+1)%QSize 。

8.从循环队列中插入一个元素的操作是Q.rear=(Q.rear+1)%QSize 。

9.判断链队列中只有一个结点的条件是Q.front->next==Q.rear 。

10.如果栈的最大长度难以估计,最好使用链栈。

四、简答题

1.为什么说栈是一种后进先出表?

答:因为栈是限定在表的一端进行插入和删除操作,所以后入栈的数据元素总是先出栈,

所以说栈是一种后进先出表。

2.对于一个栈,其输入序列是A,B,C,试给出全部可能的输出序列。

答:可能的出栈序列是:ABC、ACB、BAC、BCA、CBA。

3.何谓队列上溢?何为假溢出现象?有哪些解决假溢出问题的方法,并分别阐述其工作原理。

答:队列上溢指在队列的顺序存储分配中,所有单元中已有元素,再进行插入操作时称为队列上溢。

假溢出指在队列的顺序存储分配中,分配给队列的存储空间有存储单元未被占用,但按照操作规则而使进队的数据元素无法进队的现象。

解决假溢出问题的方法是在队列的顺序存储分配中,分配给队列的存储空间可以循环使用,其进本原理是用表示队头和队尾指针与分配给队列的存储空间长度进行取模运算。即:入队操作:Q.rear=(Q.rear+1)%MSize

出队操作:Q.front=(Q.front+1)%MSize

4.队列可以用单循环链表来实现,故可以只设一个头指针或只设一个尾指针,请分析用哪种方案最合适。

答:使用循环链表来表示队列,设置尾指针比较合适,因为入队操作可以直接在尾结点后进行插入操作,出队操作时可以根据尾指针很容易找到链表的头结点,入队出队操作的算法时间复杂度均为O(1)。若只设头指针,则出队操作的算法时间复杂度为O(1),入队操作的算法时间复杂度为O(n)。

5.简述线性表、栈和队列的异同?

答:栈和队列都是操作位置受限的线性表,即对插入和删除操作的位置加以限制。栈是仅允许在表的一端进行插入和删除操作的线性表,因而是后进先出表。队列是允许在表的一端进行插入,在表的另一端进行删除的线性表,因而是先进先出表。线性表可以在任何位置进行插入和删除操作。

五、算法设计题

1.设计一个算法,利用栈和队列的基本运算将指定栈中的元素顺序逆转。

解:算法基本思想:先将栈中元素出栈运算移至队列中,再将队列中元素出队列移至栈中。

void reverse(Stack &st)

{ Queue sq;

ElemType x;

InitQueue(sq)

while(!StackEmpty(st)

{ pop(st,x)

EnQueue(sq,x);

}

while(!QueueEmpty(sq)

{ DeQueue(sq,x);

Push(st,x);

}

DestroyQueue(sq);

}

2.设计一个算法,利用栈的基本运算返回指定栈中栈底元素。

解:先将栈中元素依次移至另一个临时栈中,最后一个元素即为栈底元素,设为x.。再将临时栈中元素移至原栈中,即恢复栈内容。

ElemType bottom(Stack &st)

{ ElemType x,y;

Stack tmpst;

InitStack(tmpst)

while(!StackEmpty(st)

{ pop(st,x)

push(tmpst,x);

}

while(!QueueStack(temst)

{ pop(tmpst,y); //此时必须用另一个变量y,才能保留栈底元素在x中

Push(st,y);

}

DestroyStack(tmpst);

return(x);

}

3.设计一个算法,利用栈来实现带头结点的单链表h的逆序。

解:算法基本思想:将单链表结点依次放入链栈中,链栈本身就是一个单链表,即实现了原单链表的逆序。假设链栈不带头结点,再加上原来的头结点,就完成了原单链表的逆序。

Void revert(SNode *h)

{ SNode *st=NULL,*p=h->next,q;

While(p)

{ q=p->next;

p->next=st;

st=p;

p=q;

}

h->next=st;

}

第四章串

一、单选题

1.串是任意有限个【D 】。

A.符号构成的集合

B.符号构成的序列

C.字符构成的集合

D.字符构成的序列

2.串是一种特殊的线性表,其特殊性体现在【B 】。

A.可以顺序存储

B.数据元素是一个字符

C.数据元素可以使多个字符

D.可以链接存储

3.两个串相等必有串长度相等且【B 】。

A.串的各位置字符任意

B.串中各位置字符均对应相等

C.两个串含有相同的字符

D.两个串所含字符任意

4.设有两个串p和q,求q在p中首次出现的位置的运算称着【B 】。

A.连接

B.模式匹配

C.求子串

D.求串长

二、填空

1.空串是长度为0的串。

2.一个串中任意连续字符组成的子序列称为该串的子串。

3.设s=“abcd”,则执行语句s2=Substr(s,2,2)后,s2= “bc”。

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

第五章数组

一、单选题

1.一维数组与线性表的区别是【A 】。

A.前者长度固定,后者长度可变

B.后进长度固定,前者长度可变

C.两者长度均固定

D.两者长度均可变

2.多维数组的数组元素之间的关系,【A 】。

A.是线性的

B.是树型的

C.既是线性的,又是树型的

D.既不是线性的,也不是树型的

3.设有数组A[8][10],每个元素占3个存储单元,存放该数组的存储单元数为【C 】。

A.80

B.100

C.240

D.270

4.设有数组A[8][10],每个元素占3个存储单元,首地址为SA,则元素[7][5]的起始地址是【D 】。

A.SA+141

B.SA+144

C.SA+222

D.SA+225

5.设有一个n*n的对称矩阵,采用压缩存储,则存入内存的元素个数为【C 】。

A.n*n

B.n*n/2

C.n*(n+1)/2

D.(n+1)2/2

6.设A是一个n*n的对称矩阵,压缩存储到一个一维数组B[0..n(n+1)/2-1]中,则下三角部分元素ai,j在B中的位置是【 A 】。

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.稀疏矩阵一般的压缩方法有两种,即【C 】。

A.二维数组和三维数组

B.三元组和散列

C.三元组和十字链表

D.散列和十字链表

8.设有一个10*10的对称矩阵A,以行主次序进行压缩存储,每个元素占一个存储单元,a1,1的地址是1,则A8,5的起始地址是【B 】。

A.13

B.33

C.18

D.40

二、解答题

1.设数组A[50][80],其基地址为2000,每个元素占2个存储单元,以行序位主序顺序存储,回答下列问题:

(1)该数据组由多少元素?

(2)该数组占用多少存储单元?

(3)数组元素a[30][30]的存储地址是多少?

答:

(1)该数组有:50*80=4000个元素

(2)该数组占用4000*4=8000个存储单元

(3)loc(30,30)=2000+(30*80+30)*2=2000+4860=6860

第六章树与二叉树

一、单选题

1.有关二叉树下列说法正确的是【B 】。

A.二叉树的度为2

B.一棵二叉树的度可以小于2

C.一棵二叉树至少有一个结点的度为2

D.二叉树中任何一个结点的度为2

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

A.指向最左孩子

B.指向最右孩子

C.空

D.非空

3.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数为【B 】。

A.9

B.11

C.15

D.不确定

4.一棵二叉树有1001个结点,其中叶结点的个数为【D 】。

A.250

B.490

C.254

D.不确定

5.一棵完全二叉树有1001个结点,其中叶结点的个数为【D 】。

A.250

B.500

C.254

D.以上答案均不对

6.一棵具有1025个结点的二叉树的高h为【C 】。

A.11

B.11

C.11至1025之间

D.10至1024之间

7.一棵124个叶结点的完全树,最多具有【B 】个结点。

A.247

B.248

C.249

D.251

8.一棵具有10个叶结点的二叉树具有【B 】度为2的结点。

A.8

B.9

C.10

D.11

9.已知一棵完全二叉树有625个结点,叶结点的个数为【C 】。

A.311

B.312

C.313

D.其它

10.一棵具有n个结点的完全二叉树的高h为【AB】。

A.?log2n?+1

B.?log2n+1?

C.log2n+1

D.log2n-1

11.由8个权值构造一棵哈夫曼树,该哈夫曼树有【A 】个结点。

A.15

B.16

C.17

D.14

12.由3个结点可以构造【D 】种不同的二叉树。

A.2

B.3

C.4

D.5

13.树最适合用来表示【C 】。

A.有序数据元素

B.无序数据元素

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

D.元素间无联系的数据

14.下图中4棵二叉树中,【C 】不是完全二叉树。

A. B. C. D.

15.某二叉树的先序遍历序列和后序便利序列正好相反,则该二叉树一定是【A 】。

A.空或只有一个结点

B.完全二叉树

C.二叉排序树

D.高度等于其结点数

16.在一棵非空二叉树的中序遍历序列中,根结点的右边【A 】。

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

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

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

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

17.任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序【A 】。

A.不发生上改变

B.发生改变

C.不能确定

D.以上都不对

18.一棵满二叉树,m个叶结点,n个结点,深度为h,则【D 】。

A.n=h+m

B.h+m=2n

C.m=h-1

D.n=2 h-1

19.设n,m是二叉树上的两个结点,在中序遍历时,n在m之前的条件是【C 】。

A.n在m右方

B.n是m的祖先

C.n在m左方

D.n是m的子孙

20.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中包含的结点数最少为【B 】。

A.2h

B.2h-1

C.2h+1

D.h+1

二、判断题

【×】1.二叉树是一般树的特殊树型。

【√】2.树与二叉树是两种不同的树形结构。

【×】3.对于有n个结点的二叉树,其高度为log2n。

【√】4.完全二叉树中,若一个没有左孩子,则它必定是叶结点。

【√】5.一棵具有n个结点的完全二叉树,从上到下、从左到右用自然数对结点进行编号,结点为i的结点的左孩子的编号为2i(2i

【×】6.一棵树中的叶结点数一定等于与其对应的二叉树的叶结点数。

【√】7.哈夫曼树是带权路径长度最短的树,路经上权值较大的结点离根最近。

【√】8.哈夫曼树的结点个数不偶数。

三、填空题

1.深度为k的完全二叉树至少有2K-1个结点,至多有2K-1 个结点。

2.在一棵二叉树中,度为0的结点个数为n0,度为2的结点个数为n2,则有n0= n2+1 。

3.一棵二叉树第i层最多有2i-1个结点,一棵有n个结点的满二叉树共有2K-1 个结点,共有2K-1个叶结点。

4.根据二叉树的定义,具有3个结点的二叉树共有 5 种不同形态,它们分别是。

5.在一棵完全二叉树中,结点个数为n ,则编号最大的分支结点的编号为 .?n/2? 。

6.在一棵完全二叉树中,编号i 和j 的两个结点处于同一层的条件是 .?log 2i ?==.?log 2j ? 。

7.具有n 个结点的二叉树采用二叉链表存储结构,共有 n+1 个空指针域。 8.具有n 个结点的二叉树中,如果有m 个叶结点,则一定有 m-1 个度为2的结点,有 n-2m+1 个度为1的结点。

9.在二叉树的链式存储结构中,指针p 所指结点为叶结点的条件是 p->lchild==NULL&&p->rchild==NULL 。 10.二叉树的先序序列和中序序列相等的条件是 任何结点至多只有右子树 。

11.有一棵如下图所示的树,回答下列问题:

①这棵树的根结点是 a 。

②这棵树的叶子结点是 b,e,g,d 。

③结点c 的度为 2 。

④这棵树的深度是 4 。

⑤结点c 的孩子结点是 e,f 。

⑥结点c 的双亲结点是 a 。

⑦这棵树的度是 3 。

12.树与二叉树的两个主要差别是 树中结点的最大度没有限制,二叉树结点的最大度限定为2 、 树的结点无左右之分,二叉树的的结点有左右之分 。

13.树中任一结点允许有 0个或多个孩子 个孩子结点,除根结点之外,其余结点有 1 个双亲结点。

四、简答题

1.设有如下图所示的二叉树,给出其前序、中序和后序遍历结果。

答: 前序序列:eadcbifghj

中序序列:abcdiefhgj

后序序列:bcidahjgfe

2.给出下图所示的树的二叉树表示。

答:下图为其树的二叉树表示。

e

a f

d i

g

c j b

h e

a

f

d i

g c j

b h k

3.有一份电文共有5个字符:a,b,c,d,e,它们出现的频率依次为4,7,5,2,9,构造对应的哈夫曼树,求哈夫曼树的带权路径长度和每个字符的哈夫曼编码。

字符编码:

a :011

b :10

c :00

d :010

e :11

4.假设一棵二叉树采用顺序存储结构,如下图所示。

回答些列问题:

①画出二叉树表示。

e

a d f c

b h g i j k

②写出先序、中序和后序遍历结果

③写出结点c 的双亲结点和左、右孩子结点

④画出此二叉树还原成森林的图

②先序序列为:eadcbjfghi

中序序列为:acbdjefhgi

后序序列为:bcjdahigfe

③结点c 的双亲结点是d

,左孩子为b ,无右孩子

④该二叉树对应的森林为

第七章图

一、单选题

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

A.1/2

B.1

C.2

D.4

2.在一个有向图中,所有顶点的入度数之和等于所有顶点的出度之和的【B 】倍。

A.1/2

B.1

C.2

D.4

3.一个有n个顶点的无向图最多有【C 】条边。

A.n

B.n(n-1)

C.n(n-1)/2

D.2n

4.具有4个顶点的无向完全图有【A 】条边。

A.6

B.12

C.16

D.20

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

A.5

B.6

C.7

D.8

6.一个有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是【D 】。

A.n

B. (n-1)2

C. (n-1)

D. n2

7.对某个无向图的邻接矩阵来说,【 A 】。

A.第i行上的非0元素个数等于第i列上非0元素个数

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

C.第i行、第i列上非0元素个数等于顶点vi的度数

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

8.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表头向量的大小为【①

A 】;所有邻接表中结点总数为【②C 】。

①A.n B.n+1 C.n-1 D.n2

②A.e/2 B.e C.2e D.n+e

二、判断题

【×】1.n个顶点的无向图至多有n(n-1)条边。

【√】2.有向图中,各顶点的入度之和等于各顶点的出度之和。

【√】3.邻接矩阵只存储了边的信息,没有存储顶点的信息。

【×】4.连通分量是无向图的极小连通子图。。

【×】5.如果表示有向图的邻接矩阵是对称的,则该有向图一定是完全有向图。

【×】6.如果表示图的邻接矩阵是对称的,则该图一定是无向图。

【√】7.如果表示图的邻接矩阵不是对称的,则该图一定是有向图。

三、填空题

1.有n个顶点的无向图最多有n(n-1)/2 条边。

2.具有n个顶点的强连通有向图至少有n 条边。

3.具有n个顶点的有向图最多有n(n-1) 条边。

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

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

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

7.已知一个有向图采用邻接矩阵表示,计算第i个顶点的入度的方法是求第i列非0元素个数。

8.已知一个有向图的邻接矩阵表示,删除所有从第i个结点出发的弧的方法是将第i 行对应的1置成0 。

9.对于n的顶点的无向图,采用邻接矩阵表示,求图中边的方法是计算邻接矩阵中元

素值为1的个数,判断任意两个顶点是否有边相连的方法是判断对应邻接矩阵元素的值是否为1,再除以2 ,求任意顶点的度的方法是求邻接矩阵中对应顶点所在行值为1 的元素个数。

10.对于n的顶点的有向图,采用邻接矩阵表示,求图中边的方法是计算邻接矩阵中元素值为1的个数,判断任意两个顶点是否有边相连的方法是判断对应邻接矩阵元素的值是否为1 ,求任意顶点的度的方法是求邻接矩阵中对应顶点所在行和列的元素值为1的个数。

11.无向图的连通分量指无向图中最大连通子图。

12.若无向图有m条边,,则表示该无向图的邻接表中有2m 结点。

四、简答题

1.从占用的存储空间来看,对于稠密图和稀疏图,采用邻接矩阵和邻接表那个更好些?

答:从占用存储空间看,稠密图采用邻接矩阵更好,稀疏图采用邻接表更好。

2.用邻接矩阵表示图时,矩阵元素的个数与顶点个数是否相关?与边的条数是否相关?为什么?。

答:用邻接矩阵表示图,矩阵元素的个数与图的顶点个数直接相关,与边的条数无关。因为假设定点个数为n,则邻接矩阵的大小为n2。

数据结构习题解答

第一章概论自测题答案 一、填空题 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。 2. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。 3. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。 4. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。 5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。 6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。 7. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结

点没有后续结点,其余每个结点的后续结点数可以任意多个。 8. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。 9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。 10. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。 11. 一个算法的效率可分为时间效率和空间效率。 二、单项选择题 (B)1. 非线性结构是数据元素之间存在一种: A)一对多关系B)多对多关系 C)多对一关系D)一对一关系 ( C )2. 数据结构中,与所使用的计算机无关的是数据的结构; A) 存储B) 物理 C) 逻辑D) 物理和存储 (C)3. 算法分析的目的是:

A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系 C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性 (A)4. 算法分析的两个主要方面是: A) 空间复杂性和时间复杂性 B) 正确性和简明性 C) 可读性和文档性 D) 数据复杂性和程序复杂性 ( C )5. 计算机算法指的是: A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法 (B)6. 计算机算法必须具备输入、输出和等5个特性。 A) 可行性、可移植性和可扩充性 B) 可行性、确定性和有穷性 C) 确定性、有穷性和稳定性 D) 易读性、稳定性和安全性

数据结构题集c语言版答案严蔚敏吴伟民[1]

16 void Descend(int &x, int &y, int &z) { int t; if(x

while(result[i].sport!=NULL) { switch(result[i].schoolname) { case 'A': score[0].totalscore+=result[i].score; if(result[i].gender==male) score[0].malescore+=result[i].score; else score[0].femalescore+=result[i].score; break; case 'B': score[1].totalscore+=result[i].score; if(result[i].gender==male) score[1].malescore+=result[i].score; else score[1].femalescore+=result[i].score; break; case 'C': score[2].totalscore+=result[i].score; if(result[i].gender==male) score[2].malescore+=result[i].score; else score[2].femalescore+=result[i].score; break; case 'D': score[3].totalscore+=result[i].score; if(result[i].gender==male) score[3].malescore+=result[i].score; else score[3].femalescore+=result[i].score; break; case 'E': score[4].totalscore+=result[i].score; if(result[i].gender==male) score[4].malescore+=result[i].score; else score[4].femalescore+=result[i].score; break; } i++; } for(s='A';s<='E';s++) { printf("School %c:\n",s); printf("Total score of male:%d\n",score[i].malescore); printf("Total score of female:%d\n",score[i].femalescore); printf("Total score of all:%d\n\n",score[i].totalscore); } } 19 Status Series(int ARRSIZE, int a[])

数据结构题集与答案

判断题 1.数据的逻辑结构与数据元素本身的容和形式无关。(√) 2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(√) 3.数据元素是数据的最小单位。(√) 4.数据的逻辑结构和数据的存储结构是相同的。(×) 5.程序和算法原则上是没有区别的,所以在讨论数据结构时可以通用。(×) 6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构。(√) 7.数据的存储结构是数据的逻辑结构的存储映像。(×) 8.数据的物理结构是指数据在计算机实际的存储形式。(√) 9.数据的逻辑结构是依赖于计算机的。(×) 10.算法是对解题方法和的描述步骤。(√) 填空题: 1.数据有逻辑结构和存储结构两种结构。 2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。 3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。 4.树形结构和图形结构合称为非线性结构。 5.在树形结构中,除了树根结点以外,其余每个结点只有 1 个前驱结点。 6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。 7.数据的存储结构又叫物理结构。 8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。 9.线性结构中的元素之间存在一对一的关系。 10.树形结构中的元素之间存在一对多的关系。 11.图形结构的元素之间存在多对多的关系。 12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)3个方面 的容。 13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系的 有限集合。 14.算法是一个有穷指令的集合。 15.算法效率的度量可以分为事先估算和事后统计法。 16.一个算法的时间复杂性是算法输入规模的函数。 17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题 规模n的函数。 18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O (nlog2n )。 若一个算法中的语句频度之和为T(n)=3n+nlog2n+n2,则算法的时间复杂度为 ___O(n*n)_______ 。 数据结构是一门研究非数值计算的程序设计总是中计算机的操作对象,以及它们之间的关系和运算的学科。 19.串的两种最基本的存储方式是顺序存储方式链式存储方式。 20.两个串相等的充分必要条件是、长度相等对应位置的字符相同。

数据结构试题集(包含答案 完整版)

第一章概论 一、选择题 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 )。 for(i=0;i

O(m+n) 6、算法是(D )。 A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示(C )。 A. O(n) B. O(nlog2n) C. O(n2) D. O(log2n) 8、下面程序段的时间复杂度为( C )。 i=1; while(i<=n) i=i*3; A. O(n) B. O(3n) C. O(log3n) D. O(n3) 9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的()和运算等的学科。 A. 结构 B. 关系 C. 运算 D. 算法 10、下面程序段的时间复杂度是(A )。 i=s=0; while(s

数据结构习题集

第一章绪论 一、填空题 1.数据是描述客观事物的数、字符以及所有能输入到计算机且能够被计算机程序加工处理的符号集合。____数据元素_____是数据的基本单位;____数据项_______是数据的最小单位。通常被计算机加工处理的数据不是孤立无关的,而是彼此之间存在着某种联系,将这种数据间的联系称为____结构____。 2.数据结构进行形式化定义时,可以从逻辑上认为数据结构DS是_____数据元素的有限集____的集合D和D上____关系的有限集_____的集合R所构成的二元组:DS=(D,R)。 3. 4.一个算法的时间复杂度通常用问题规模大小的函数来表示,当一个算法的时间复杂度与问题规模n大小无关时,则表示为____O(1)______;成正比关系时,则表示为_____O(n)______;成对数关系时,则表示为 ____O(log2n)_______;成平方关系时,则表示为____O(n2)______。 5.数据结构的逻辑结构包括_____线性结构________、树型结构和图型结构三种类型,其中树型结构和图型结构合称为______非线性结构_______;数据结构的存储结构主要包括____顺序________和______链式______两种类型。 6.线性结构的特点是:第一个结点___无____前驱结点,其余结点有且仅有__一_____个前驱结点;最后一个结点__无_____后继结点,其余每个结点有且仅有___一____个后继结点。 7.树型结构的特点是:根结点没有__前驱______结点,其余每个结点有且仅有_____一个___个前驱结点;叶子结点_____无____后继结点,其余结点可以有___任意______个后继结点。 8.图型结构的特点是:每个结点可以有____任意_____个前驱结点和后继结点。 9.程序段for(i=1,s=0;s}。 2.B=(K,R),其中:K={a,b,c,d,e,f,g,h},R={r},r={}。 3.C=(K,R),其中:K={ a,b,c,d,e },R={r},r={}。 4.D=(K,R),其中:K={48,25,64,57,82,36,75},R={r1,r2},r1={<25,36>,<36,48>,<48, 57>,<57,64>,<64,75>,<75,82>};r2={<48,25>,<48,64>,<64,57>,<64,82>,<25,36>, <25,75>}。 5.E=(K,R),其中:K={1,2,3,4,5,6,7},R={r},r={<1,2>,<2,1>,<1,4>,<4,1>,<2, 3>,<3,2>,<3,4>,<4,3>,<1,3>,<3,1>}。 三、指出下列各函数的功能并求出其时间复杂度。 1.void prime(int n) { int i; for(i=2;i<=sqrt(n);i++) if (n %i==0) break; if (i>sqrt(n)) printf(“yes”); else printf(“no”); }

数据结构习题集包含全部答案

数据结构习题集(自编) 第一章绪论 一、选择题 1.数据结构就是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()与运算的学科。 A.结构 B.关系 C.运算 D.算法 2.在数据结构中,从逻辑上可以把数据结构分成()。 A.动态结构与静态结构 B.紧凑结构与非紧凑结构 C.线性结构与非线性结构 D.逻辑结构与存储结构 3.线性表的逻辑顺序与存储顺序总就是一致的,这种说法()。 A.正确 B.不正确 C.无法确定 D.以上答案都不对 4.算法分析的目的就是()。 A.找出算法的合理性 B.研究算法的输人与输出关系 C.分析算法的有效性以求改进 D.分析算法的易懂性 5、算法的时间复杂度取决于( ) A.问题的规模B待处理数据的初态 C、 A与B 6.一个算法应该就是( )。 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A与C、 7、下面关于算法说法错误的就是( ) A.算法最终必须由计算机程序实现 B、为解决某问题的算法与为该问题编写的程序含义就是相同的 C、算法的可行性就是指指令不能有二义性 D、以上几个都就是错误的 8.以下与数据的存储结构无关的术语就是( )。 A.循环队列 B、链表 C、哈希表D、栈 9.在下面的程序段中,对x的赋值语句的频度为( ) for(i=0;i

数据结构习题与答案

第 1 章绪论 课后习题讲解 1. 填空 ⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 【解答】数据元素 ⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。 【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别是()、()、()、()、()。 【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性 ⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度是()的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

数据结构习题集(积分)

第一章绪论 1.下面是几种数据的逻辑结构S=(D,R),分别画出对应的数据逻辑结构,并指出它们分别属于何种结构。 D={a,b,c,d,e,f} R={r} (a) r={} (b)r={} (c)r={} 2.分析下列程序段的时间复杂度 (a) for(i=0;i

数据结构习题集答案解析_清华大学版

第1章 绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值 Put(&C,k,e) 操作结果:改变复数C 的第k 元的值为e IsAscending(C) 操作结果:如果复数C 的两个元素按升序排列,则返回1,否则返回0 IsDescending(C)

数据结构题集答案复习过程

数据结构题集答案

数据结构题集 第一章绪论 一、单选题 1.在数据结构中,从逻辑上可以把数据结构分成【 C 】。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指【 A 】。 A.数据的存储结构 B.数据结构 C.数据结构的逻辑结构 D.数据元素之间的关系 3. 【 A 】是数据的最小单位,【 B 】是数据的基本单位。 A.数据项 B.数据元素 C.信息项 D.表元素 4. 计算机所处理数据一般具有某种内在联系,这是指【 B 】。 A.数据与数据之间存在某种关系 B.数据元素与数据元素之间存在某种关系 C.元素内部存在某种结构 D.数据项与数据项之间存在某种关系 5.算法分析的目的是【 C 】。 A.找出数据结构的合理性 B.研究输入和输出的关系 C.分析算法的效率以求改进 D.分析算法的易懂性 6.在存储数据时,不仅要考虑存储各数据元素的值,而且还要存储【 C 】。 A.数据处理的方法 B.数据元素的类型 C.数据元素之间的关系 D.数据的存储方法

7.算法分析的主要任务是分析【 D 】。 A.算法是否具有较好的可读性 B.算法中是否存储语法错误和逻辑错误 C.算法的功能是否符合设计要求 D.算法的执行时间与问题规模之间的关系。 8.数据的运算【 A 】。 A.效率与采用何种存储结构有关 B.是根据存储结构来定义的 C.有算术运算和关系运算两大类 D.必须用程序设计语言来描述 9.算法的计算量的大小称为算法的【 B 】。 A.效率 B.时间复杂度 C.现实性 D.难度 10.连续存储分配时,存储单元的地址【A 】。 A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续 二、判断题 1.数据元素是数据结构的最小单位【.×】。 2.数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构【×.】。 3.数据的逻辑结构指数据元素的各数据项之间的逻辑关系【×.】。 4.算法的优劣与算法的描述语言无关,但与使用的计算机有关【.×】。 5.数据结构的抽象操作的定义与具体实现有关【.×】。

严蔚敏数据结构题集C语言版完整与答案

严蔚敏 数据结构C 语言版答案详解 第1章 绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值

数据结构习题集

数据结构试题 一、单项选择 1、若某线性表中最常用的操作是在最后一个元素之后插入和删除元素,则采用___________最节省运算时间. A、单链表 B、仅有头指针的单循环链表 C、仅有尾指针的单循环链表 D、双链表 2、哈夫曼树的带权路径长度WPL等于___________. A、除根以外的所有结点的权植之和 B、所有结点权值之和 C、各叶子结点的带权路径长度之和 D、根结点的值 3、设输入序列为1,2,3,4,5,借助一个栈不可能得到的输出序列是___________. A、1,2,3,4,5 B、1,4,3,2,5 C、4,1,3,2,5 D、1,3,2,5,4 4、20个结点的完全二叉树,其高度为___________. A、3 B、2 C、4 D、5 5、栈和队列都是___________. A、顺序存储的线性结构 B、链式存储的线性结构 C、限制存储点的线性结构 D、限制存储点的非线性结构 6、已知完全二叉树有30个结点,则整个二叉树有___________个度为1的结点. A、0 B、1 C、2 D、不确定 7、对于N个结点的完全无向图,其边数是___________ A、N B、N2 C、N(N-1)/2 D、N(N-1) 8、队列的特点是 A、先进先出 B、先进后出 C、后进先出 D、不进不出 9、连通分量是的极大连通子图。 A、有向图 B、树 C、无向图 D、图 10、现有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。表示该遗传关系最适合的数据结构为.............................. A、向量 B、树 C、图 D、二叉树 11、栈和队列都是(). A、线性结构 B、链式存储的线性结构 C、线性结构或非线性结构 D、非线性结构 12、二叉树第J层有()个结点 A、J B、2J C、J+1 D、不能确定 13、若图G中()是有向的,则称此图为有向图.

数据结构题集(C语言版)答案_严蔚敏编著

勇者,必以决斗之勇气与五张试卷一决雌雄;懦夫,概以鼠目之寸光量人生此战必输无疑!第1章绪论 1.1 简述下列术语:数据 数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型 解:数据是对客观事物的符号表示 在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称 数据元素是数据的基本单位 在计算机程序中通常作为一个整体进行考虑和处理 数据对象是性质相同的数据元素的集合 是数据的一个子集 数据结构是相互之间存在一种或多种特定关系的数据元素的集合 存储结构是数据结构在计算机中的表示 数据类型是一个值的集合和定义在这个值集上的一组操作的总称 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作 是对一般数据类型的扩展 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别 解:抽象数据类型包含一般数据类型的概念 但含义比一般数据类型更广、更抽象 一般数据类型由具体语言系统内部定义 直接提供给编程者定义用户数据 因此称它们为预定义数据类型 抽象数据类型通常由编程者定义 包括定义它所使用的数据和在这些数据上所进行的操作 在定义抽象数据类型中的数据部分和操作部分时 要求只定义到数据的逻辑结构和操作说明 不考虑数据的存储结构和操作的具体实现 这样抽象层次更高 更能为其他用户提供良好的使用接口 1.3 设有数据结构(D R) 其中

试按图论中图的画法惯例画出其逻辑结构图 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数) 解: ADT Complex{ 数据对象:D={r i|r i为实数} 数据关系:R={} 基本操作: InitComplex(&C re im) 操作结果:构造一个复数C 其实部和虚部分别为re和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C k &e) 操作结果:用e返回复数C的第k元的值 Put(&C k e) 操作结果:改变复数C的第k元的值为e IsAscending(C) 操作结果:如果复数C的两个元素按升序排列 则返回1 否则返回0 IsDescending(C) 操作结果:如果复数C的两个元素按降序排列 则返回1 否则返回0 Max(C &e) 操作结果:用e返回复数C的两个元素中值较大的一个 Min(C &e)

大数据结构试题集(含答案)

程序复杂性 3、具有线性结构的数据结构是( D )。 A. 图 B. 树 C. 广义表 D. 栈 4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B)等5个特性。 A. 可执行性、可移植性和可扩充性 B. 可执行性、有穷性和确定性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是(C)。 for(i=0;i=(y+1)*(y+1))

数据结构题集

正确 获得1.00分中的1.00分 标记题目 题干 中缀表达式:(a+b)*d+e/(f+a*d)+c的后缀表达式为:ab+d*efad+/*+c+ ( ) 选择一项: 对 错 反馈 正确的答案是“错”。 正确 此次提交得分:1.00/1.00。 题目2 正确 获得1.00分中的1.00分 标记题目 题干 若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是() 选择一项: a. b,c,a,e,f,d b. a,f,e,d,c,b c. d,c,e,b,f,a d. c,b,d,a,e,f

correct feedback 正确答案是:a,f,e,d,c,b 正确 此次提交得分:1.00/1.00。 题目3 正确 获得1.00分中的1.00分 标记题目 题干 假设栈初始为空,将中缀表达式a/b+(c*d-e*f)/g转换为等价的后缀表达式的过程中,当扫描到f时,栈中的元素依次是()。 选择一项: a. +(*— b. +(—* c. /+—* d. /+(*—* 反馈 correct feedback 正确答案是:+(—* 正确 此次提交得分:1.00/1.00。 题目4 正确 获得1.00分中的1.00分 标记题目 题干 一个栈的入栈序列为1,2,3,…,n,其出栈序列是p1,p2,p3,…,pn。如果p2=3,则

p3可能取值的个数是( )。 选择一项: a. 无法确定 b. n-3 c. n-2 d. n-1 反馈 correct feedback 正确答案是:n-1 正确 此次提交得分:1.00/1.00。 题目5 正确 获得1.00分中的1.00分 标记题目 题干 经过下列栈运算后,StackEmpty(S)的值是______。InitStack(S);Push(S,a);Push(S,b);Pop(S,x);Pop(S,y) 选择一项: a. a b. 1 c. b d. 0 反馈 correct feedback 正确答案是:1 正确

数据结构题集答案

数据结构题集 第一章绪论 一、单选题 1.在数据结构中,从逻辑上可以把数据结构分成【C 】。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指【A 】。 A.数据的存储结构 B.数据结构 C.数据结构的逻辑结构 D.数据元素之间的关系 3. 【A 】是数据的最小单位,【B 】是数据的基本单位。 A.数据项 B.数据元素 C.信息项 D.表元素 4. 计算机所处理数据一般具有某种内在联系,这是指【B 】。 A.数据与数据之间存在某种关系 B.数据元素与数据元素之间存在某种关系 C.元素内部存在某种结构 D.数据项与数据项之间存在某种关系 5.算法分析的目的是【C 】。 A.找出数据结构的合理性 B.研究输入和输出的关系 C.分析算法的效率以求改进 D.分析算法的易懂性 6.在存储数据时,不仅要考虑存储各数据元素的值,而且还要存储【C 】。 A.数据处理的方法 B.数据元素的类型 C.数据元素之间的关系 D.数据的存储方法 7.算法分析的主要任务是分析【D 】。 A.算法是否具有较好的可读性 B.算法中是否存储语法错误和逻辑错误 C.算法的功能是否符合设计要求 D.算法的执行时间与问题规模之间的关系。 8.数据的运算【A 】。 A.效率与采用何种存储结构有关 B.是根据存储结构来定义的 C.有算术运算和关系运算两大类 D.必须用程序设计语言来描述 9.算法的计算量的大小称为算法的【B 】。 A.效率 B.时间复杂度 C.现实性 D.难度 10.连续存储分配时,存储单元的地址【A 】。 A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续 二、判断题 1.数据元素是数据结构的最小单位【.×】。 2.数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构【×.】。 3.数据的逻辑结构指数据元素的各数据项之间的逻辑关系【×.】。 4.算法的优劣与算法的描述语言无关,但与使用的计算机有关【.×】。

数据结构习题集(答案)

数据结构习题 第一章绪论 数据结构是一门研究非数值计算的程序设计问题中计算机的___①__以及它们之间的__②_ 和运算等的学科。 ①A.数据元素 B.计算方法 C.逻辑存储 D.数据映像 ②A.结构 B.关系 C.运算 D.算法 算法分析的目的是___①__ ,算法分析的两个主要方面是__②___ 。 ① A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 C.分析算法的效率以求该进 D.分析算法的易懂性和文档性 。 ② A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 计算机算法指的是__①__ ,它必须具备输入、输出和__②_ 等5个重要特性。 ① A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 ② A.可读性、可移植性和可扩展性 B. 可读性、可移植性和有穷性 C.确定性、有穷性和可行性 D.易读性、稳定性和安全性 数据元素是数据处理的基本单位;数据项是数据处理的_最小单位。 数据结构是研究数据的逻辑结构___和__物理结构__,并对这种结构定义相适应的运算,设计出相应的算法,分析算法的效率。算法的效率包括时间和空间两个方面,分别称为_空间复杂度和时间复杂度。数据的逻辑结构是指_数据元素之间的关系__;包括线性结构、树形结构和图形结构三种类型,其中树形结构和图状结构合称为__非线性结构__。 线性结构中元素之间存在_一对一___ 关系,树形结构中元素之间存在_一对多___ 关系,图状结构中元素之间存在__多对多__ 关系。 | 数据结构在计算机中的表示称为数据的物理(或存储)结构,数据的物理结构可以采用_顺序存储和_链式存储__两种存储方法。 顺序存储方法是把逻辑上相邻的元素存储在物理位置相邻的内存单元中;链式存储方法中元素间的关系是由__指针来表示_的。 第二章线性表 链表不具备的特点是____ 。 A.可随机访问任一结点 B.插入删除不需移动元素 C.不必事先估计存储空间 D.所需空间与其长度成正比 不带头结点的单链表head 为空的判定条件是____。 A. head==null B. head->next==null C. head->next==head D. head !=null , 带头结点的单链表head 为空的判定条件是____。 A. head==null B. head->next==null C. head->next==head D. head!=null 非空的循环单链表head 的尾结点(由p所指向)满足____。 A. p->next==null B. p==null C. p->next==head D. p==head 在一个具有n 个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是____。

数据结构综合习题集(含答案)

数据结构习题集 一、选择题 1.数据结构中所定义的数据元素,是用于表示数据的。(C) A.最小单位 B.最大单位 C.基本单位 D.不可分割的单位 2.从逻辑上可以把数据结构分为(C) A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 3.当待排序序列中记录数较少或基本有序时,最适合的排序方法为(A ) A.直接插入排序法 B.快速排序法 C.堆排序法 D.归并排序法 4.关于串的的叙述,不正确的是( B) A.串是字符的有限序列 B.空串是由空格构成的串 C.替换是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 5.带表头结点链队列的队头和队尾指针分别为front和rear,则判断队空的条件为(A )A.front==rear B.front!=NULL C.rear!=NULL D.front==NULL 6.若构造一棵具有n个结点的二叉排序树,最坏的情况下其深度不会超过(B) A.n/2 B.n C.(n+1)/2 D.n+1 7.将两个各有n个元素的有序表合并成一个有序表,其最少的比较次数为(A) A.n B.2n-1 C.2n D.n2 8.设顺序表有19个元素,第一个元素的地址为200,且每个元素占3个字节,则第14个元素的存储地址为(B ) A.236 B.239 C.242 D.245 9.一个栈的入栈序列是a,b,c,d,e,则栈的输出序列不可能是(A ) A.dceab B.decba C.edcba D.abcde 10.元素大小为1个单元,容量为n个单元的非空顺序栈中,以地址高端为栈底,以top作为栈顶指针,则出栈处理后,top的值应修改为(D ) A.top=top B.top=n-1 C.top=top-1 D.top=top+1 11.设有一个10阶的对称矩阵A,采用压缩存储方式以行序为主序存储,a00为第一个元素,其存储地址为0,每个元素占有1个存储地址空间,则a45的地址为(B) A.13 B.35 C.17 D.36 12.栈和队列( C ) A.共同之处在于二者都是先进先出的特殊的线性表 B.共同之处在于二者都是先进后出的特殊的线性表 C.共同之处在于二者都只允许在顶端执行删除操作

相关文档
最新文档