收藏 分销(赏)

数据结构习题集.docx

上传人:a199****6536 文档编号:3860698 上传时间:2024-07-22 格式:DOCX 页数:29 大小:69.75KB
下载 相关 举报
数据结构习题集.docx_第1页
第1页 / 共29页
数据结构习题集.docx_第2页
第2页 / 共29页
数据结构习题集.docx_第3页
第3页 / 共29页
数据结构习题集.docx_第4页
第4页 / 共29页
数据结构习题集.docx_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、1 绪论一、选择题:1、下列算法的时间复杂度是( ) for(i=0;in;i+ +) ci=i; AO(1) BO(n) CO(log2n) DO(nlog2n)2、数据在计算机存储器内表示时,根据结点的关键字直接计算出该结点的存储地址,这种方法称为( ) A索引存储方法 B顺序存储方法 C链式存储方法 D散列存储方法 解析: 数据结构在计算机中的表示(映像)称为数据的物理(存储)结构。它包括数据元素的表示和关系的表示。数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻

2、的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。链式存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。数据结构中,逻辑上(逻辑结构:数据元素之间的逻辑关系)可以把数据结构分成线性结构和非线性结构。线性结构的

3、顺序存储结构是一种随机存取的存储结构,线性表的链式存储结构是一种顺序存取的存储结构。线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。逻辑结构与数据元素本身的形式、内容、相对位置、所含结点个数都无关。3、以下哪一个术语与数据的存储结构无关?( )。A.顺序表 B.链表C.散列表 D.队列4、算法在发生非法操作时可以做出处理的特性称为( )。A正确性B易读性C健壮性D高效性5、逻辑结构是指数据元素的( )。A关联方式 B存储方式C结构D数据项6、研究数据结构就是研究( )。A数据的逻辑结构B数据的存储结构C数据的逻辑结构和存储结构D数据的逻辑结构、存储结构及其数据的运算7、从逻

4、辑上可以把数据结构分为( )。A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构8、以下有关数据的叙述中错误的是( )。A计算机能够处理的数据包括整数、实数、字符、声音、图像等B数据的逻辑结构是从逻辑关系上描述数据,它取决于数据的存储方式C数据存储结构的实现依赖于计算机语言D数据的运算是定义在数据的逻辑结构上的9、数据的基本单位是( )。A.数据结构 B.数据元素C.数据项 D.文件10、下列算法的时间复杂度是( ) for(i=0;im;i+ +) for(j=0;jn;j+ +) aij=i*j; AO(m2) BO(n2) CO(mn) DO

5、(m+n)11、算法分析的两个主要方面是( )。A正确性和简明性 B数据复杂性和程序复杂性C可读性和可维护性D时间复杂性和空间复杂性二、填空题:1、数据结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括三方面的内容,分别是数据的逻辑结构、( )和( )。2、数据的逻辑结构是从逻辑关系上描述数据,它与数据的()无关,是独立于计算机的。3、( )结构与数据元素本身的内容和形式无关。 4、程序段“for(i=1;i=n;i+) k+; for(j=1;j=n;j+) x=x+k;”的时间复杂度为( )。5、数据的存储结构(物理结构)可以用( )、( )、( )及散列存储等四种存储方法表示。

6、三、 判断题:1、顺序存储方式优点是存储密度大,且插入和删除运算效率高。 ( )2、顺序存储结构属于静态存储结构,链式存储结构属于动态存储结构。 ( )3、线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。 ( )4、数据的机内表示称为数据的存储结构。 ( )5、在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。( )6、数据元素是数据的最小单位。 ( )7、基于某种逻辑结构之上的运算,其实现是惟一的。 ( )参考答案(绪论)一、选择题1234567891011BDDCADCBACD二、填空题1、数据结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括三方面

7、的内容,分别是数据的逻辑结构、(存储结构)和(运算)。2、数据的逻辑结构是从逻辑关系上描述数据,它与数据的()无关,是独立于计算机的。3、(逻辑)结构与数据元素本身的内容和形式无关。 4、程序段“for(i=1;i=n;i+) k+; for(j=1;jnext=P-next;P-next=S BP-next=S-next;S-next=P; CP-next=P;P-next=S; DP-next=S;S-next=P;3、在已知头指针的单链表中,要在其尾部插入一新结点,其算法所需的时间复杂度为( ) A(1) B(log2n) CO(n) DO(n2) 解析:单就插入运算而言,算法时间复杂度

8、为(1),但要将指针定位到链表末尾,指针移动的时间复杂度为O(n);4、对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( ) A顺序表 B用头指针表示的单循环链表 C用尾指针表示的单循环链表 D单链表 解析:尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear-next-next 和 rear, 查找时间都是O(1)。若用头指针来表示该链表,则查找终端结点的时间为O(n)。5、线性表是( ) A一个有限序列,可以为空 B一个有限序列,不能为空 C一个无

9、限序列,可以为空 D一个无限序列,不能为空6、在n个结点的双链表的某个结点前插入一个结点的时间复杂度是( ) AO(n) BO(1) CO(log2n) DO(n2)7、线性表采用链式存储时,结点的地址( ) A必须是连续的 B必须是不连续的 C连续与否均可 D必须有相等的间隔8、在单链表中,增加头结点的目的是( ) A使单链表至少有一结点 B标志表中首结点位置 C方便运算的实现 D说明单链表是线性表的链式存储实现9、带头结点的单链表head为空的判定条件是( ) Ahead = NULL; Bhead - next = NULL; Chead - next = head; Dhead ! =

10、 NULL;10、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度为( ) A(1) B(n) C(n2) D(log2n)11、下列有关线性表的叙述中,正确的是( ) A线性表中的元素之间是线性关系 B线性表中至少有一个元素 C线性表中任何一个元素有且仅有一个直接前趋 D线性表中任何一个元素有且仅有一个直接后继12、在单链表中,存储每个结点需有两个域,一个是数据域,另一个是指针域,它指向该结点的( ) A直接前趋 B直接后继 C开始结点 D终端结点13、将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是( )。An B.2n-1 C.2n D.n-114、链表

11、不具有的特点是( )。A随机访问 B不必事先估计存储空间C插入删除时不需移动元素 D所需的空间与线性表成正比15、在一个单链表中,已知q所指结点是p所指结点的直接前趋,若在p,q之间插入s结点,则执行的操作是( )。 As-next=p-next;p-next=s; Bq-next=s;s-next=p;Cp-next=s-next;s-next=p; Dp-next=s;s-next=q;16、链表具有的特点是( )。A可随机访问任一元素B插入、删除需要移动元素C不必事先估计存储空间D存储空间是静态分配的17、一个顺序表一旦说明,其中可用空间大小( )A已固定B可以改变C不能固定D动态变化1

12、8、若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用( )存储方式最节省时间。A 顺序表B单链表C双向链表D单循环链表19、两个指针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元素的前驱的条件是( )。AP-next=QBQ-next=PCP=QDP-next=Q-next20、链表不具有的特点是( )。A可随机访问任一元素 B插入、删除不需要移动元素C不必事先估计存储空间 D所需空间与线性表长度成正比21、下面关于线性表的叙述中,错误的是( )。A线性表采用顺序存储,必须占用一片连续的存储单元B线性表采用顺序存储,便于进行插入和删除操作C线性表采用链接存储,不必

13、占用一片连续的存储单元D线性表采用链接存储,便于进行插入和删除操作22、在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是( )。A访问第i个结点(1in)和求第i个结点的直接前趋(2in)B在第i个结点后插入一个新结点(1in)C删除第i个结点(1in)D将n个结点从小到大排序23、在一个单链表中,若删除p指向结点的后继结点,则执行的操作为( )。Aq=p-next;p-next=p-next-next;free(q);Bp=p-next;q=p-next;p=q-next;free(q);Cq=p-next-next;p=p-next;free(q);Dp=p-next-next;q

14、=p-next;free(q);二、 填空题:1、在双链表中要删除已知结点*p,其时间复杂度为()。2、在仅有尾指针R指示的单循环链表R中,在表尾插入一个结点S的语句序列是( )。3、在带头结点的双链表中,指针所指结点是开始结点的条件是()。4、在具有n个结点的双链表中做插入、删除运算,平均时间复杂度为()。5、在一个长度为n的顺序表中第i个元素(1 i n)之前插入一个元素时,需向后移动()个元素。6、在双循环链表中,若要在指针p所指结点之前插入指针s所指的结点,则需执行下列语句:s-prior=p-prior;p-prior-next=s;( )和p-prior=s;。7、已知指针p指向双

15、向链表中的一个结点(非首结点、非尾结点),则将结点s插入在p结点的直接后继位置的语句是( )s-prior=p;s-next-prior=s;p-next=s;8、已知带表头结点的单链表L,指针p指向L链表中的一个结点(非首结点、非尾结点),则删除结点p的直接后继结点的语句是( );删除首结点的语句是( )。三、 判断题1、在有序的顺序表和有序的链表上,均可以使用折半查找法来提高查找速度。( )2、顺序存储的线性表可以随机存取。 ( )3、线性表采用顺序存储,必须占用一片连续的存储单元。 ( )四、 程序设计题数据结构的数据类型定义如下: 顺序存储: typedef struct int *b

16、ase; int length; int listsize; sqlist; 链式存储: typedef struct LinkList int data; struct LinkList *next; Node,*LinkList; 1、已知带头结点的单链表head中的结点是按整数值递增排序的,写一算法将值为x的结点插入到表head中,使head仍然有序。2、用尾插法建立带头结点的单链表。3、用头插法建立带头结点的单链表。4、对给定的单链表L,编写一个删除L中值为x的结点的直接前趋结点算法。5、用顺序存储结构实现线性表的就地逆置算法,即将(a1,a2, ai,an)逆置为(an,ai,a2,

17、a1);6、用链式存储结构实现线性表的就地逆置算法,即将(a1,a2, ai,an)逆置为(an,ai,a2,a1);7、使用顺序存储结构分别实现A=AB和A=AB运算;参考答案(线性表)一、选择题1234567891011121314151617181920212223BABCABCCBBABBABCBAAABAA二、填空题1、在双链表中要删除已知结点*p,其时间复杂度为(O(1))。2、在仅有尾指针R指示的单循环链表R中,在表尾插入一个结点S的语句序列是(P=R; while(P-next!=NULL) P=P-next; P-next=S; S-next=NULL;)。3、在带头结点的双

18、链表中,指针所指结点是开始结点的条件是(P= =L)。4、在具有n个结点的双链表中做插入、删除运算,平均时间复杂度为(O(1))。5、在一个长度为n的顺序表中第i个元素(1 i n)之前插入一个元素时,需向后移动(n-i+1)个元素。6、在双循环链表中,若要在指针p所指结点之前插入指针s所指的结点,则需执行下列语句:s-prior=p-prior;p-prior-next=s;( s-next=p; )和p-prior=s;。7、已知指针p指向双向链表中的一个结点(非首结点、非尾结点),则将结点s插入在p结点的直接后继位置的语句是(p-next=s;)s-prior=p;s-next-prio

19、r=s;p-next=s;8、已知带表头结点的单链表L,指针p指向L链表中的一个结点(非首结点、非尾结点),则删除结点p的直接后继结点的语句是(q=p-next; p-next=q-next; free(q););删除首结点的语句是(q=L-next; L=L-next; free(q);)。三、判断题1、在有序的顺序表和有序的链表上,均可以使用折半查找法来提高查找速度。()2、顺序存储的线性表可以随机存取。 ()3、线性表采用顺序存储,必须占用一片连续的存储单元。 ()四、程序设计题1、已知带头结点的单链表head中的结点是按整数值递增排序的,写一算法将值为x的结点插入到表head中,使he

20、ad仍然有序。P=head-next;While(p-next!=NULL&p-datanext;/指针定位p-next=x;x-next=p-next;2、用尾插入法建立带头结点的单链表。 请参考教材“数据结构-清华大学严尉敏著评p29-p30”;3、用头插入法建立带头结点的单链表。请参考教材“数据结构-清华大学严尉敏著评p29-p30”;4、对给定的单链表L,编写一个删除L中值为x的结点的直接前趋结点算法。/算法思路:先判断L中是否存在值为x的结点,若不存在,返回错误(-1);若存在,用一指针p定位到值为x的第一结点,用另一个指针q定位到值为x的第一结点的前驱结点,然后实施删除操作;重点语

21、句为:p=L-next;/p指向第一个结点whili(p-data!=x&p-next!=NULL) p=p-next;if(p= =NULL) ruturn error;/不存在else p=L-next; while(p-next-next-data!=x) p=p-next; q=p-next; p-next=p-next-next; free(q);5、用顺序存储结构实现线性表的就地逆置算法,即将(a1,a2, ai,an)逆置为(an,ai,a2,a1);重点语句: for(i=0;irear=(qrear+1)%maxsize;20、栈和队列都是( )。A限制存取点的线性结构 B限

22、制存取点的非线性结构C顺序存储的线性结构 D链式存储的线性结构21、实现递归调用属于( )的应用。A队列 B栈 C 数组 D树二、 填空题: 1、循环队列用数组datam存放其元素值,已知其头、尾指针分别是front和rear,则当前队列中元素的个数是()。2、栈顶的位置是随着()操作而变化的。3、假设以S和X分别表示进栈和退栈操作,则对输入序列a,b,c,d,e进行一系列栈操作SSXSXSSXXX之后,得到的输出序列为()。4、队列的队尾位置随着()而变化。5、在( )的情况下,链队列的出队操作需要修改尾指针。6、从栈顶指针为top的链栈中删除一个结点,并将被删除的结点的值保存在x中,其操作

23、步骤为( );top=top-next;。7、用数组Am来存放循环队列q的元素,且它的头、尾指针分别为front和rear,队列满足条件(q.rear+1)%m=q.front,则队列中当前的元素个数为( )。8、顺序栈s存储在数组s-datamax中,对s进行出栈操作,执行的语句序列是( )。9、以下运算实现在循环队列中的初始化操作void initqueue(seqqueue *q)q-front=0;( );三、 判断题:1、循环队列中无上溢现象。 ( )2、循环队列只有下溢,没有上溢。 ( )3、对顺序栈而言,在栈满状态,如果此时再作进栈运算,则会发生“下溢”。 ( )4、顺序队列和循

24、环队列的队满和队空的条件是一样的。 ( )5、为解决队列“假满”问题,可以采用循环数组实现队列存储。 ( )6、队列是后进先出表。 ( )7、栈是后进先出表。 ( )四、 应用题:1、 设有一个栈,元素进栈的次序为A,B,C,D,E,写出下列出栈序列的操作序列。(1)CBADE(2)ACBED,其中I为进栈操作,O为出栈操作。2、如果编号为1、2、3的三辆列车进入一个栈式结构的站台,那么可能得到的三辆列车出站序列有哪些?不可能出现的序列是什么?五、 程序设计题:1、写出循环队列入队操作的函数。参考答案(栈和队列)一、选择题123456789101112131415161718192021AAB

25、DBCDBCBDCCBABBBCAB二、填空题1、循环队列用数组datam存放其元素值,已知其头、尾指针分别是front和rear,则当前队列中元素的个数是((rear-front+maxsize)%maxsize)。2、栈顶的位置是随着(入栈和出栈)操作而变化的。3、假设以S和X分别表示进栈和退栈操作,则对输入序列a,b,c,d,e进行一系列栈操作SSXSXSSXXX之后,得到的输出序列为(bceda)。4、队列的队尾位置随着(入队列操作变化)而变化。5、在(链队列为空)的情况下,链队列的出队操作需要修改尾指针。 分析:Q.rear=h;6、从栈顶指针为top的链栈中删除一个结点,并将被删除

26、的结点的值保存在x中,其操作步骤为(x=top-data)。7、用数组Am来存放循环队列q的元素,且它的头、尾指针分别为front和rear,队列满足条件(q.rear+1)%m=q.front,则队列中当前的元素个数为(0)。8、顺序栈s存储在数组s-datamax中,对s进行出栈操作,执行的语句序列是(stop-)。9、以下运算实现在循环队列中的初始化操作void initqueue(seqqueue *q)q-front=0;( qbase=(qelemtype *)malloc(maxsize*sizeof(qelemtype); qrear=0;);三、判断题1、循环队列中无上溢现象。 ()2、循环队列只有下溢,没有上溢。 ()3、对顺序栈而言,在栈满状态,如果此时再作进栈运算,则会发生“下溢”。 ()4、顺序队列和循环队列的队满和队空的条件是一样的。 ()5、为解决队列“假满”问题,可以采用循环队列实现队列存储。 ()6、队列是后进先出的线性表。 ()7、栈是后进先出表。 ()四、应用题1、设有一个栈,元素进栈的次序为A,B,C,D,E,写出下列出栈序列的操作序列。(1)CBADE(2)ACBED,其中I为进栈操作,O为出栈操作。参考答案:(1)IIIOO

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服