数据结构练习题.docx

上传人:b****3 文档编号:5205817 上传时间:2022-12-13 格式:DOCX 页数:37 大小:248.63KB
下载 相关 举报
数据结构练习题.docx_第1页
第1页 / 共37页
数据结构练习题.docx_第2页
第2页 / 共37页
数据结构练习题.docx_第3页
第3页 / 共37页
数据结构练习题.docx_第4页
第4页 / 共37页
数据结构练习题.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

数据结构练习题.docx

《数据结构练习题.docx》由会员分享,可在线阅读,更多相关《数据结构练习题.docx(37页珍藏版)》请在冰豆网上搜索。

数据结构练习题.docx

数据结构练习题

数据结构练习题

习题1绪论

一、基本内容

数据、数据元素、数据对象、数据结构、存储结构和数据类型等概念术语的确定含义;算法设计的基本要求以及从时间和空间角度分析算法的方法。

二、要点:

1.熟悉各名词、术语的含义,掌握基本概念,特别是数据的逻辑结构和存储结构

2.理解算法五个要素的确切合义:

动态有穷性(能执行结束);确定性(对于相同的输入执行相同的路径);有输入;有输出;可行性(用以描述算法的操作都是可以通过已经实现的基本的运算执行有限次来实现的)。

3.掌握计算语句频度和估算算法时间复杂度的方法。

1.1选择题

1.数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。

①A.操作对象B.计算方法C.逻辑结构D.数据映象

②A.存储结构B.关系C.运算D.算法

2.数据结构DS(DataStruct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。

①A.算法B.数据元素C.数据操作D.数据对象

②A.操作B.映象C.存储D.关系

3.在数据结构中,从逻辑上可以把数据结构分成。

A.动态结构和静态结构B.紧凑结构和非紧凑结构

C.线性结构和非线性结构D.内部结构和外部结构

4.算法分析的目的是①,算法分析的两个主要方面是②。

①A.找出数据结构的合理性B.研究算法中的输入和输出的关系

C.分析算法的效率以求改进D.分析算法的易懂性和文档性

②A.空间复杂性和时间复杂性B.正确性和简明性

C.可读性和文档性D.数据复杂性和程序复杂性

5.计算机算法指的是①,它必具备输入、输出和②等五个特性。

①A.计算方法B.排序方法

C.解决问题的有限运算序列D.调度方法

②A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性

C.确定性、有穷性和稳定性D.易读性、稳定性和安全性

1.2填空题(将正确的答案填在相应的空中)

1.数据结构的三个要点是数据元素的逻辑结构、数据在计算机中的存储结构和数据的运算。

1.数据逻辑结构包括线性结构、树形结构、图形结构三种类型,树形结构和图形结构合称为非线性结构。

2.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。

3.在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个直接前驱结点,叶子结点没有后续结点,其余每个结点的直接后续结点可以任意多个。

4.在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。

5.线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

6.算法的五个重要特性是有穷性、确定性、可行性、输入、输出。

7.分析下面算法(程序段),给出最大语句频度:

n2,时间复杂度:

.O(n2)。

for(i=0;i

for(j=0;j

A[i][j]=0;

8.分析下面算法(程序段),给出最大语句频度:

n(n+1)/2,时间复杂度:

.O(n2)

for(i=0;i

for(j=0;j

A[i][j]=0;

9.分析下面算法(程序段),最大语句频度:

n3,时间复杂度:

.O(n3)

s=0;

for(i=0;i

for(j=0;j

for(k=0;k

s=s+B[i][j][k];

sum=s;

10.分析下面算法(程序段)给出最大语句频度:

n

,时间复杂度:

.O(n

i=s=0;

while(s

11.分析下面算法(程序段)给出最大语句频度:

log2n,时间复杂度:

.O(log2n)

i=1;

while(i<=n)i=i*2;

1.3简答题

1、试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。

例如有一张学生成绩表,记录了一个班的学生各门课的成绩。

按学生的姓名为一行记成的表。

这个表就是一个数据结构。

每个记录(有姓名,学号,成绩等字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录)。

这几个关系就确定了这个表的逻辑结构。

那么我们怎样把这个表中的数据存储到计算机里呢?

用高级语言如何表示各结点之间的关系呢?

是用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢?

这就是存储结构的问题,我们都是从高级语言的层次来讨论这个问题的。

最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询,修改,删除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了。

2、常用的存储表示方法有哪几种?

常用的存储表示方法有两种:

顺序存储方法和链接存储方法

3、设n为正整数,利用大"O"记号,将下列程序段的执行时间表示为n的函数。

(1)i=1;k=0

while(i

(2)i=0;k=0;

do{k=k+10*i;i++;}while(i

(3)x=n;//n>1

while(x>=(y+1)*(y+1))

y++;◆T(n)=n1/2∴T(n)=O(n1/2)◇最坏的情况是y=0,那么循环的次数是n1/2次,这是一个按平方根阶递增的函数。

(4)x=91;y=100;

while(y>0)

if(x>100){x=x-10;y--;}

elsex++;◆T(n)=O

(1)◇这个程序总共循环运行了1000次,但是我们看到n没有?

没有。

这段程序的运行是和n无关的,只是一个常数阶的函数。

4、算法的时间复杂度仅与问题的规模相关吗?

No,事实上,算法的时间复杂度不仅与问题的规模相关,还与输入实例中的元素取值等相关,但在最坏的情况下,其时间复杂度就是只与求解问题的规模相关的。

我们在讨论时间复杂度时,一般就是以最坏情况下的时间复杂度为准的。

习题2线性表

一、基本内容

线性表的逻辑结构定义和各种存储结构的描述方法;在线性表的两类存储结构(顺序的和链式的)上实现基本操作;一元多项式的表示及相加。

二、学习要点

1.了解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构和链式存储结构。

用前者表示的线性表简称为顺序表,用后者表示的线性表简称为链表。

2.熟练掌握这两类存储结构的描述方法,如一维数组中一个区域的上、下界和长度之间的变换公式,链表中指针P和结点p的对应关系(结点p一>next是结点P的后继等),链表中的头结点、头指针和首元结点的区别及循环链表、双向链表的特点等。

链表是本章的重点和难点。

扎实的指针操作和内存动态分配的编程技术是学好本章的基本要求。

3.熟练掌握线性表在顺序存储结构上实现基本操作:

查找、插入和删除的算法。

4.熟练掌握在各种链表结构中实现线性表操作的基本方法,能在实际应用中选用适当的链表结构。

5.从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。

2.1单项选择题

1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。

A.110B.108C.100D.120

2.线性表的顺序存储结构是一种___的存储结构,而链式存储结构是一种___的存储结构。

A.随机存取B.索引存取C.顺序存取D.散列存取

3.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。

A.正确B.不正确

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

A.必须是连续的B.部分地址必须是连续的

C.一定是不连续的D.连续或不连续都可以

5.在以下的叙述中,正确的是___。

线性表的顺序存储结构优于链表存储结构

线性表的顺序存储结构适用于频繁插入/删除数据元素的情况

线性表的链表存储结构适用于频繁插入/删除数据元素的情况

线性表的链表存储结构优于顺序存储结构

6.每种数据结构都具备三个基本运算:

插入、删除和查找,这种说法___。

A.正确B.不正确

7.不带头结点的单链表head为空的判定条件是____。

A.head==NULLB.head->next==NULL

C.head->next==headD.head!

=NULL

8.带头结点的单链表head为空的判定条件是____。

A.head==NULLB.head->next==NULL

C.head->next==headD.head!

=NULL

9.非空的循环单链表head的尾结点(由p所指向)满足____。

A.p->next==NULLB.p==NULL

C.p->next==headD.p==head

10.在双向循环链表的p所指结点之后插入s所指结点的操作是____。

A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;

B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;

C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;

D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;

11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行_。

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

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

12.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。

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

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

13.在一个单链表中,若删除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;

14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。

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

15.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。

A.O

(1)B.O(n)C.O(n2)D.O(nlog2n)

16.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。

A.O

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

2.2填空题(将正确的答案填在相应的空中)

1.对于顺序表(采用顺序存储结构的线性表)(a1,a2,…,an),设L表示一个元素占用的存储单元个数,LOC(ai)表示线性表第i个元素的地址,已知第1个元素的地址为LOC(a1),则LOC(ai)=

2.向一个长度为n的顺序表的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动_n-i+1_个元素。

3.向一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动_n-i___个元素。

4.单链表可以看做_线性表_的链式存储表示。

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

6.带头结点的单链表中,除头结点外,任一结点的存储位置是在其前驱结点的指针域中。

7.单链表中引入头结点的作用是在链表的第一个位置上行插入和删除等操作时无须进行特殊处理

8.一个长为n的线性表,其排序时间性能最优为.O(n*Log2n)。

9.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:

q=head;

while(q->next!

=p)q=q->next;

s=(structnode*)malloc(sizeof(structnode));s->data=e;

q->next=s;//填空

s->next=p;//填空

10.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:

q=p->next;

p->next=_q->next_;//填空

free(q_);//填空

11.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=p->next和p->next=_s_的操作。

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

(1)_;在给定值为x的结点后插入一个新结点的时间复杂度是O(n)_。

13.第二章作业题

习题3栈和队列

一、基本内容

栈和队列的结构特点;在两种存储结构上如何实现栈和队列的基本操作以及栈和队列在程序设计中的应用。

二、学习要点

1.掌握栈和队列的特点。

2.熟练掌握栈类型的两种实现方法,即两种存储结构表示时的基本操作实现算法,特别应注意栈满和栈空的条件以及它们的描述方法。

3.熟练掌握循环队列的基本操作实现算法.持别注意队满和队空的描述方法。

4.理解递归算法执行过程中栈的状态变化过程。

3.1单项选择题

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

A.edcbaB.decbaC.dceabD.abcde

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

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

3.栈结构通常采用的两种存储结构是____。

A.顺序存储结构和链式存储结构B.散列方式和索引方式

C.链表存储结构和数组D.线性存储结构和非线性存储结构

4.判定一个顺序栈ST(最多元素为m0)为空的条件是____。

A.top!

=0B.top==0C.top!

=m0D.top==m0-1

5.判定一个顺序栈ST(最多元素为m0)为栈满的条件是____。

A.top!

=0B.top==0C.top!

=m0D.top==m0

6.栈的特点是_B__,队列的特点是_A__。

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

7.向一个栈顶指针为HS的链栈中插入一个s所指结点时,则执行____。

(不带空的头结点)

A.HS—>next=s;

B.s—>next=HS—>next;HS—>next=s;

C.s—>next=HS;HS=s;

D.s—>next=HS;HS=HS—>next;

8.从一个栈顶指针为HS的链栈中删除一个结点时,用x保存被删结点的值,则执行____。

(不带空的头结点)

A.x=HS;HS=HS—>next;B.x=HS—>data;

C.HS=HS—>next;x=HS—>data;D.x=HS—>data;HS=HS—>next;

9.一个队列的数据入列序列是1,2,3,4,则队列的出队时输出序列是____。

A.4,3,2,1B.1,2,3,4

C.1,4,3,2D.3,2,4,1

10.判定一个循环队列QU(最多元素为m)为空的条件是____。

A.rear-front==mB.rear-front-1==m

C.front==rearD.front==rear+1

11.判定一个循环队列QU(最多元素为m,m==Maxsize-1)为满队列的条件是____。

A.(rear+1)%Maxsize==front

B.rear-front-1==mC.front==rearD.front==rear+1

12.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是____。

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

C.rear-front-1D.rear-front

13.栈和队列的共同点是____。

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

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

3.2填空题(将正确的答案填在相应的空中)

1.向量、栈和队列都是线性__结构,可以在向量的_任何___位置插入和删除元素;对于栈只能在_栈顶__插入和删除元素;对于队列只能在__队尾__插入元素和__队首__删除元素。

3.向栈中压入元素的操作是__先存入元素,后移动栈顶指针__。

4.对栈进行退栈时的操作是__先移动栈顶指针,后取出元素__。

对于顺序栈存放在一维数组s[0...M]。

按课件中的定义:

top=0为栈空,x入栈时,s[top]=x;top++;即先存入元素,后移动栈顶指针

top=M时栈满,出栈时,top--;x=s[top]。

即先移动栈顶指针,后取出元素

按有些参考书中定义:

top=-1表示栈空,x入栈时,top++,s[top]=x;即先移动栈顶指针,后存入元素

top=M-1表示栈满,出栈时,x=s[top];top--。

即先取出元素,后移动栈顶指针

5.在一个循环队列中,队首指针指向队首元素的__前一个位置__。

6.从循环队列中删除一个元素时,其操作是__先移动队首元素,后取出元素__。

7.在具有n个单元的循环队列中,队满时共有__n-1__个元素。

8.一个栈的输入序列是12345,则栈的输出序列43512是__不可能的__。

9.一个栈的输入序列是12345,则栈的输出序列12345是__可能的__。

10.想象六辆列车位于图中堆栈的输入一边,列车编号为123456,按此顺序开进堆栈,且可在任意时刻开走,则能否得到32564l出站序列?

能否得到154623出站序列?

在可能的情况下,说明如何实现。

能得到325641.实现过程为;Push,push,push,pop,pop,Push,push,pop,push,pop,pop,pop。

不能得到154623。

11.设循环队列存放在向量sq.data[o..m]中,则队头指针sq.front在循环意义下的加1操作可用模运算表示为(sq.front+1)MOD(m+1)。

若用牺牲一个单元的办法来区分队满和队空条件,则队满条件可表示为(sq.rear+1)MOD(m+1)=sq.front。

12.设顺序栈存放在一维数组s[M],栈底位置是m-1,则栈空条件top=0,栈满条件是top=m。

13.循环队列只有下溢,没有上溢。

(错误)

14.队列和栈都是运算受限的线性表,只允许在表的两端进行运算。

(正确)

15.栈有哪几种不同的存储结构?

请分别画出在这些存储结构中元素a,b,c,J依次进栈后堆栈的状态。

链栈和顺序栈

17.循环队列入队、出队算法如下:

3

2

1

入队算法:

voiden_cycque(intsq[],intstart,intend,intx)

{if(((end+1)%M)==start)printf("overflow");

else{end=(end+1)%M;sq[end]=x;}

}

出队算法:

intdl_cycque(intsq[],intstart,intend,int*q)

{if(start==end)return(0);

else{start=(start+1)%M;*q=sq[start];return

(1);}

}

队列某个时刻的初始状态如图所示。

1).在初始状态上,画出a7、a8和a9入队后的状态图,

2).在初始状态上,画出a4、a5和a6出队后的状态图。

习题4串

一、基本内容

串的定义;串的三种存储表示:

定长顺序存储结构、块链存储结构和堆分配存储结构;串的各种基本操作的实现。

二、学习要点

1.熟悉串的基本操作的定义

2.掌握在串的定长顺序存储结构上实现串的各种操作的方法。

3.掌握串的堆存储结构以及在其上实现串操作的基本方法。

4.1单项选择题

1.以下叙述中正确的是。

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

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

2.空串与空格串是相同的,这种说法____。

A.正确B.不正确

3.串是一中特殊的线性表,其特殊性体现在____。

A.可以顺序存储B.数据元素是一个字符

C.可以链接存储D.数据元素可以是多个字符

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

A.连接B.模式匹配

C.求子串D.求串长

5.设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是____。

A.BCDEFB.BCDEFG

C.BCPQRSTD.BCDEFEF

6.设串的长度为n,则它的子串个数为。

A.nB.n(n+1)C.n(n+1)/2D.n(n+1)/2+1

4.2填空题(将正确的答案填在相应的空中)

1.串的三种存储表示:

定长顺序存储结构、块链存储结构和堆分配存储结构

2.两个串相等的充分必要条件是__两个串的长度相等且对应位置的字符相同__。

3.空串是__零个字符的串__,其长度

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

当前位置:首页 > 自然科学 > 生物学

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

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