2022年数据结构题库归纳 .pdf
《2022年数据结构题库归纳 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构题库归纳 .pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章绪 论一,选择题1组成数据的基本单位是(C )A数据项B数据类型C数据元素D数据变量2数据结构是研究数据的(C )以及它们之间的相互关系。A理想结构,物理结构B理想结构,抽象结构C物理结构,逻辑结构D抽象结构,逻辑结构3算法分析的两个主要方面是(D )A正确性和简单性B可读性和文档性C数据复杂性和程序复杂性D时间复杂度和空间复杂度4算法分析的目的是(C )。A 找出数据结构的合理性B研究算法中的输入和输出的关系C分析算法的效率以求改进D分析算法的易懂性和文档性5.算法的时间复杂度取决于(C )A问题的规模B. 待处理数据的初态C. A和 B以上都不是6一个算法应该是(B)。A程序B问题求
2、解步骤的描述C要满足五个基本特性DA 和 C.7.下面关于算法说法错误的是(D )A算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的8从逻辑上可以把数据结构分为(C )两大类。A动态结构、静态结构B顺序结构、链式结构C线性结构、非线性结构D初等结构、构造型结构9程序段for(i=n-1;i=1;i-)for(j=1;jAj+1)Aj 与 Aj+1 对换;其中 n 为正整数,则最后一行的语句频度在最坏情况下是(D )A O(n)B O(nlogn)C.O(n3)DO(n2)10连续存储设计时,存储单元
3、的地址(A )。A一定连续B一定不连续C不一定连续D部分连续,部分不连续二,判断题1数据结构的抽象操作的定义与具体实现有关。( )2数据结构是数据对象与对象中数据元素之间关系的集合。( )3在顺序存储结构中,有时也存储数据结构中元素之间的关系。( )4数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用的需要建立的。( )5算法和程序原则上没有区别,在讨论数据结构是两者是通用的。( )6同一数据逻辑结构中的所有数据元素都具有相同的特性是指数据元素所包含的数据项的个数都相等。( )7数据的逻辑结构与数据元素本身的内容和形式无关。( )8算法的优劣与算法描述语言无关,但与所用计算机有关。()9
4、健壮的算法不会因非法的输入数据而出现莫名其妙的状态。( )名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 22 页 - - - - - - - - - 10算法可以用不同的语言描述,如果用C 语言或 PASCAL 语言等高级语言来描述,则算法实际上就是程序了。()三,填空1数据的物理结构包括数据元素的表示和数据元素间关系的表示。2.对于给定的n 个元素, 可以构造出的逻辑结构有集合, 线性结构, 树形结构,_图状结构或网状结构_四种。3一个数据结构在计算机中表示(又称映像
5、)称为存储结构。4抽象数据类型的定义仅取决于它的一组_逻辑特性 _,而与_在计算机内部如何表示和实现_无关,即不论其内部结构如何变化,只要它的_数学特性_不变,都不影响其外部使用。5线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系 ,图形结构中元素之间存在多对多关系。6一个算法有5 个特性:有穷性、确定性、可行性,有零个或多个输入、有一个或多个输出。7已知如下程序段for (i= n;i=1;i+)语句 1x:=x+1;语句 2for( j=n;j=i ;j+)语句 3y:=y+1;语句 4语句 1 执行的频度为n+1;语句 2 执行的频度为n;语句3 执行的频度为n(n+3
6、)/2;语句 4 执行的频度为n(n+1)/2。8在下面的程序段中, 对的赋值语句的频度为_O(n3)_ (表示为 n的函数) /1+ (1+2+(1+2+3)+(1+2+n)=n(n+1)(n+2)/6for(i1;i=n;i+)for(j;j=i;j+)for(k 1;k=j;j+) delta ;9.计算机执行下面的语句时,语句s 的执行次数为_(n+3)(n-2)/2_ 。for(i=l;i=i;j-)s;10.下面程序段的时间复杂度为_O(n)_。(n1)sum=1 ;for(i=0;sumn;i+)sum+=1;四,应用题11什么是数据 ? 它与信息是什么关系?信息就是消息。信息的
7、特征为:可识别、可存储、可变换、可处理、可传递、可再生、可压缩、可利用、可共享。什么是数据?数据(data)是信息的载体,是描述客观事物的数、字符、以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。在计算机中, 信息必须以数据的形式出现。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 22 页 - - - - - - - - - 2 什么是数据结构? 数据结构是研究什么内容的学科?有关数据结构的讨论涉及哪三方面?数据结构是指数据以及相互之间的关系。记为:数据结
8、构= D, R。其中, D 是某一数据对象, R是该对象中所有数据成员之间的关系的有限集合。数据结构是一门研究在非数值计算的程序设计问题中,计算机的操作对象及对象间的关系和施加于对象的操作等的学科。有关数据结构的讨论一般涉及以下三方面的内容:(1)数据成员以及它们相互之间的逻辑关系,也称为数据的逻辑结构,简称为数据结构;(2)数据成员及其关系在计算机存储器内的存储表示,也称为数据的物理结构,简称为存储结构;(3)施加于该数据结构上的操作。数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储不是一码事,是与计算机存储无关的。 因此, 数据的逻辑结构可以看作是从具体问题中抽象出来的数据模型,是数据
9、的应用视图。数据的存储结构是逻辑数据结构在计算机存储器中的实现(亦称为映像),它是依赖于计算机的, 是数据的物理视图。数据的操作是定义于数据逻辑结构上的一组运算,每种数据结构都有一个运算的集合。例如搜索、插入、删除、更新、排序等。3评价一个好的算法,从哪几方面考虑?评价好的算法有四个方面。一是算法的正确性;二是算法的易读性;三是算法的健壮性;四是算法的时空效率(运行)。4若将数据结构定义为一个二元组(D,R), 说明符号D,R应分别表示什么?D是数据元素的有限集合,R是 D上数据元素之间关系的有限集合。5解释算法与程序的区别?算法是为了解决某类问题而规定的一个有限长的操作序列。一个算法必须满足
10、以下五个重要特性:有穷性确定性可行性有输入有输出算法与程序的联系和区别:(1)算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。一个程序不一定满足有穷性。例如,操作系统,只要整个系统不遭破坏,它将永远不会停止。因此,操作系统不是一个算法。(2)程序中的指令必须是机器可执行的,而算法中的指令则无此限制。(3)算法是面向功能的,通常用面向过程的方式描述;程序可以用面向对象方式搭建它的框架。(4)算法与数据结构是相辅相承的:解决某一特定类型问题的算法可以选定不同的数据结构, 而且选择恰当与否直接影响算法的效率。反之, 一种数据结构的优劣由各种算法的执行来体现。6 有下列几种用二元组表示的数
11、据结构,画出它们分别对应的逻辑图形表示,并指出它们分别属于何种结构。(1)A= (K,R),其中:K=a ,b,c,d,e,f,gR=rr= a,b, b,c, c,d, d,e, e,f, f,g名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 22 页 - - - - - - - - - (2)B=(K,R),其中:K=a ,b,c,d,e,f,g,hR=rr= d,b, d,g, d,a, b,c, g, e, g,h, a,f(3)C=(K,R),其中:K=1 ,2
12、,3,4,5,6R=rr=(1, 2),(2, 3),( 2,4),( 3,4),( 3,5),( 3,6),( 4,5),( 4,6) 这里的圆括号对表示两结点是双向的。(1)A 对应逻辑图形如下,它是一种线性结构。(2)B 对应逻辑图形如下,它是一种树形结构。(3)C 对应逻辑图形如下,它是一种图形结构。7 分析以下程序段的时间复杂度。(1)a=0;b=1;for(i=2;i=n;i+ )s=a+b;b=a;a=S;(2)inti ,j,k;for(i=0;in;i+for(j=0;jn;j+cij=0 ;for(k=0;kn;k+名师资料总结 - - -精品资料欢迎下载 - - - -
13、- - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 22 页 - - - - - - - - - cij=cij+aik+bkj;(1)解:语句的频度是2;语句的频度是n;语句的频度是n-1;语句的频度是n-1;语句的频度是n-1;故,该程序段的时间复杂度T(n)=2+n+3* ( n-1)=4n-1=O (n)。(2)解:语句的频度为n+1;语句作为语句循环体内的语句应该执行n 次,但语句本身要执行n+1 次,故语句的频度是n(n+1);同理可得语句、和的频度分别是n2, n2(n+1)和 n3。该程序段所有语句的频度之和为:T(
14、n)=2n3+3n2+2n+1其复杂度为O (n3)。8求下列算法段的语句频度及时间复杂度(1)for(i=1;i=n;i+)for(j=1; j=i; j+)x=x+1;(2)for(i=1;i=n;i+)for(j=1;j=i;j+)for(k=1;knext=hB. p-next=NILC. p-next-next=hD. p-data=-12下面关于线性表的叙述中,错误的是哪一个?(B)A线性表采用顺序存储,必须占用一片连续的存储单元。B线性表采用顺序存储,便于进行插入和删除操作。C线性表采用链接存储,不必占用一片连续的存储单元。D线性表采用链接存储,便于插入和删除操作。名师资料总结
15、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 22 页 - - - - - - - - - 3线性表是具有n 个(C)的有限序列( n0)。A表元素B字符C数据元素D数据项4若某线性表最常用的操作是存取任一指定 序号的元素和在最后进行插入和删除运算,则利用(A)存储方式最节省时间。A顺序表B双链表C带头结点的双循环链表D单循环链表5某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D)存储方式最节省运算时间。A单链表B仅有头指针的单循环链表C双链表D仅
16、有尾指针的单循环链表6设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用(D ) 最节省时间。A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表7在带有头结点的单链中插入一个新结点时不可能修改(A)。A 头指针B头结点指针域C 开始结点指针域D其它结点指针域8 双向链表中有两个指针域,llink和 rlink,分别指向前驱及后继,设p 指向链表中的一个结点,q 指向一待插入结点,现要求在p 前插入 q,则正确的插入为(D)。A.p-llink=q;q-rlink=p;p-llink-rlink=q;q-llink=p-llink;B. q-llink=p-ll
17、ink;p-llink-rlink=q;q-rlink=p;p-llink=q-rlink;C.q-rlink=p;p-rlink=q;p-llink-rlink=q;q-rlink=p;D.p-llink-rlink=q;q-rlink=p;q-llink=p-llink;p-llink=q;9对于一个头指针为head 的带头结点的单链表,判定该表为空表的条件是(B)。Ahead=NULLBheadnext=NULLCheadnext=headDhead!=NULL10在顺序表中查找第i 个元素的时间效率最高的算法时间复杂度是(A)。AO(1)BO(n)CO(log2n)DO(n)11最好的
18、情况下,在顺序表中按值查找一个元素的算法时间复杂度是(D )。AO(n)BO(n)C O(log2n)DO(1)12.若长度为 n 的线性表采用顺序存储结构,在其第 i 个位置插入一个新元素的算法的时间复杂度为(C )(1=ilink=headBp-link=NILCp=NILDp= head二,判断1.链表中的头结点仅起到标识的作用。()2线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。( )3顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。()4顺序存储方式只能用于存储线性结构。()5线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。( )6.线性表的特点是
19、每个元素都有一个前驱和一个后继。( )7.取线性表的第i 个元素的时间同i 的大小有关。( )名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 22 页 - - - - - - - - - 8.循环链表不是线性表。( )9.线性表就是顺序存储的表。( )10.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( )三,填空1当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用顺序存储结构。2线性表L=(a1,a2, ,a
20、n )用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是(n-1)/2。3在一个长度为n 的顺序表中第i 个元素( 1=inext=p-next、f-prior=p、p-next-prior=f、p-next=f。6.在双向链表结构中,若要求在 p 指针所指的结点之前插入指针为s 所指的结点, 则需执行下列语句:s-next=p ;s-prior=p-prior;p-prior=s ; s-prior-next=s;7. 顺序存储结构通过物理上相邻表示元素之间的关系 ; 链式存储结构通过指针表示元素之间的关系。8.对于双向链表 , 在两个结点之间插入一个新结点需
21、修改的指针共4 个,单链表为2 个。9.已知指针p 指向单链表L 中的某结点,则删除其后继结点的语句是:u=p-next;p-next=u-next;free(u);, 时间复杂度是O(1) ; 。10.带头结点的双循环链表L 中只有一个元素结点的条件是L-next-next=L。四,算法设计1试写一算法在带头结点的单链表结构上实现线性表操作LOCATE (L,X)。LNode* Locate(LinkList L,int x)/ 链表上的元素查找,返回指针for(p=l-next;p&p-data!=x;p=p-next);returnp;/Locate2试写一算法在带头结点的单链表结构上实
22、现线性表操作LENGTH (L)。int Length(LinkList L)/ 求链表的长度for(k=0,p=L;p-next;p=p-next,k+);return k;/Length3试写一算法实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2, ,an)逆置为( an,an-1, ,a1)。voidreverse(SqList&A)/ 顺序表的就地逆置名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 22 页 - - - - - - - - - for
23、(i=0,j=A.length-1;ij;i+,j-)A.elemiA.elemj;/reverse4试写一算法,对单链表实现就地逆置void LinkList_reverse(Linklist &L)/ 链表的就地逆置;为简化算法 ,假设表长大于2p=L-next;q=p-next;s=q-next;p-next=NULL;while(s-next)q-next=p;p=q;q=s;s=s-next; / 把 L 的元素逐个插入新表表头q-next=p;s-next=q;L-next=s;/LinkList_reverse分析 :本算法的思想是,逐个地把 L 的当前元素q 插入新的链表头部,
24、p 为新表表头 .5.设线性表A =( a1,a2, ,an), B=(b1,b2, ,bn),试写一个按下列规则合并A,B为线性表 C的算法,即使得C=(a1,b1, am,bm,bm+1, ,bn)当 mn 时;线性表 A,B 和 C均以单链表作存储结构,且C 表利用 A 表和 B 表中的结点空间构成。注意:单链表的长度值m 和 n 均未显式存储。void merge1(LinkList &A,LinkList &B,LinkList &C)/ 把链表 A 和 B 合并为 C,A和 B的元素间隔排列,且使用原存储空间p=A-next;q=B-next;C=A;while(p&q)s=p-n
25、ext;p-next=q; / 将 B 的元素插入if(s)t=q-next;q-next=s; / 如 A 非空 ,将 A 的元素插入p=s;q=t;/while/merge1第三章栈和队列一,选择1.对于栈操作数据的原则是(B )。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 22 页 - - - - - - - - - A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2.已知输入序列为abcd 经过输出受限的双向队列后能得到的输出序列有(B )。A. da
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构题库归纳 2022 数据结构 题库 归纳
限制150内