数据结构习题集(总)
数据结构习题集(包含全部答案)
数据结构习题集(自编)之阳早格格创做第一章绪论一、采用题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战B6.一个算法该当是().A.步调B.问题供解步调的形貌C.要谦脚五个基础个性 D.A战C.7. 底下闭于算法道法过得的是()A.算法最后必须由估计机步调真止C. 算法的可止性是指指令不克不迭有二义性D. 以上几个皆是过得的8.以下与数据的保存结构无闭的术语是().A.循环行列 B. 链表 C. 哈希表 D. 栈9.正在底下的步调段中,对付x的赋值语句的频度为()for(i=0;i<n;i++)for(j=0;j<n;j++)x=x+1;A. 2n B.n C.n2 D.log2n10.以下数据结构中,()利害线性数据结构A.树 B.字符串 C.行列 D.栈11. 下列数据中,()是线性数据结构.A.哈妇曼树 B.有背无环图 C. 二叉排序树 D. 栈12.以部下于逻辑结构的是().A.程序表 B. 哈希表 D. 单链表二、挖空题1、_______是疑息的载体,是对付客瞅真物的标记表示,它不妨被估计机辨别、保存、加工战处理,________是对付不妨灵验的输人到估计机中而且不妨被估计机处理的标记的总称.(数据、数据)2、数据元素是数据的______,有些情况下也称为元素、结面、顶面、记录等.(基础单位)3、________是数据不可分隔的最小单元,是具备独力含意的最小标记单位.比圆形成一个数据元素的字段、域、属性等皆可称之为________.(数据项、数据项)4、数据的逻辑结构是指数据之间的________.逻辑结构是从________上形貌数据,它与简曲保存无闭,是独力于估计机的.果此逻辑结构不妨瞅做是从简曲问题抽象出去的______________.(逻辑闭系、逻辑闭系、数教模型)5、数据的________指数据元素及其闭系正在估计机保存器内的表示._________是逻辑结构正在估计机里的真止,也称之为映像.(保存结构、保存结构)6、数据逻辑结构不妨分为四种基础的典型,_______结构中的元素除了只是不过共属于一个_________________,不存留什么闭系.(集中、集中)7、数据逻辑结构的四种基础典型中,________中的元素是一种一对付一的闭系,那种结构的个性是:若结构利害空集,则有且惟有一个启初结面战一个末端结面,而且所有结面最多只可有一个间接前驱战一个间接后继.(线性结构)8、数据逻辑结构的四种基础典型中,____________中的元素是一种一对付多的闭系.(树形结构)9、图型结构大概图状结构是一种________的闭系.正在那种逻辑结构中,所有结面均不妨有多个前驱战多个后继.(多对付多)10、奇我也可将树型结构、集中战图型结构称为__________,那样数据的逻辑结构便不妨分为__________战________二大类.(非线性结构、线性结构、非线性机构)11、____________办法是指逻辑上相邻的结面被保存到物理上也相邻的保存单元中.那种保存结构只保存结面的数值,不保存结面之间的闭系,结面之间的闭系是通过保存单元的相邻闭系隐含的表示出去的.(程序保存)12、_______办法是种保存要领,不央供逻辑上相邻的结面正在物理上也相邻,即数据元素不妨保存正在任性的位子上.(链式保存)13、_________办法是利用结面闭键字的值间接估计出该结面保存单元天面,而后将结面按某种办法存人该天面的一种要领.(集列保存大概哈希保存)14、所谓算法(Algorithm)是对付特定问题供解步调的一种形貌,它是指令的其中每个指令表示一个大概多个支配.算法的五个要害个性是__________、__________、__________、__________战__________.(有限序列、有贫性、决定性、可止性、输进、输出)15、算法的_______性是指算法必须不妨正在真止有限个步调之后中断,而且每个步调皆必须正在有贫的时间内完成.(有贫性)16、算法的________性是指算法中的每一个步调必须是有明决定义的,不允许有模棱二可的阐明,也不允许有多义性.而且,正在所有条件下,算法只可有惟一的一条真止路径,即只消输人是相共的便只可得到____________的输出截止.(决定性、相共)17、算法的____________性又称为算法的能止性,是指算法中形貌的支配是不妨通过已经真止的基础运算真止有限次去真止.(可止性)18、推断一个算法的利害主要以下几个尺度:________、________、________、_________.(精确性、可读性、结实性、时间效用战空间效用)19、算法分解是对付一种算法所消耗的估计机资材的估算,其中包罗估计机_________的少短战___________________的大小.(运止时间、所吞噬空间)20、空间搀纯度(SPace ComPlexity)也是度量一个算法利害的尺度,它所形貌的是算法正在运止历程中所占用_____________的大小.(保存空间)三、推断题1.程序保存办法只可用于保存线性结构.(×)2.数据元素是数据的最小单位.(×)3.算法的劣劣与算法形貌谈话无闭,然而与所用估计机有闭.(×)4.结实的算法不会果非法的输进数据而出现莫名其妙的状态.()5.数据的逻辑结构是指各元素之间的逻辑闭系,是根据用户需要而建坐的.6.数据结构、数据元素、数据项正在估计机中的映像分别称为保存结构、结面、数据域.()7.数据的物理结构是指数据正在估计机中本量的保存形式.()8.具备存与任一元素的时间相等那一个性的保存结构称为随机存与结构.9.算法本量上便是步调,步调也一定是算法.(×)10. 正在程序保存结构中,奇我也保存数据结构中元素之间的闭系.(×)11. 程序保存办法的便宜是保存稀度大,且拔出、简略运算效用下.(×)12. 数据结构的基础支配的树坐的最要害的规则是,真止应用步调与保存结构的独力.()13. 数据的逻辑结构道明数据元素之间的程序闭系,它依好于估计机的储藏结构. (×)14. 推断一个算法的利害主要以下几个尺度:精确性、有贫性、结实性战可止性.(×)15.算法的时间搀纯度T(n)=O(f(n))表示随问题规模n的删大,算法真止时间的删少率与函数f(n)的删少率相共.()四、概括题1.用大O形式表示底下算法的时间搀纯度:for(i=0;i<m;i十十)for(j=0;j<n;j++)A[i][j]=i*j;2.写出底下算法的时间搀纯度:i=0;s=0;while(s<n){ i++;s+=i;}3.写出以下算法的时间搀纯度:for(i=0; i<m; i++)for(j=0 ; j<t; j++)c[i][j]=0;for(i=0;i<m;i++)for(j=o; j<t; j++)for(k=0;k<n;k++)c[i][j]+=a[i][k]*b[k][j];4.写出底下算法的时间搀纯度:i=1;while(i<=n)i=i*3;5.供底下函数中各条语句的频度战算法的时间搀纯度:prime(int n){int i=2;while ((n%i)!=0&&i<sqrt(n) )i++;if(i>sqrt(n) )printf(”%d is a prime number.\n”,n);elseprintf(”%d is not a prime number.\n”,n);}1. 该算法的时间搀纯度为:O(m×n).2. 该算法的时间搀纯度为:3. 该算法的时间搀纯度为:O(m×n×t).4. 该算法的时间搀纯度为:log3(n).5. 该算法的时间搀纯度为:6.将下列函数,按它们正在n→∝时的无贫大阶数,从小到大排序.n, n-n3+7n5, nlogn, 2n/2, n3, logn, n1/2+logn, (3/2)n, ,n!, n2+logn从小到大排列为:logn, n1/2+logn, n, nlogn, n2+logn,n3, n-n3+7n5, 2n/2, (3/2)n, n!,第二章线性表一、采用题1.正在一个少度为n的程序表中简略第i个元素(0<i<=n)时,需要背前移动( )个元素.A.n-i B.n-i+1 C.n-i-1D.i+12.从一个具备n个元素的线性表中查找其值等于x的结面时,正在查找乐成的情况下,需仄稳比较( )个元素结面.A.n/2 B.n C.(n-1)/2 D.(n +1)/23.对付一个具备n个元素的线性表,建坐其单链表的时间搀纯度为( ).A.O(n) B.O(1) C.O(n2) D.O(long2n)4.线性表采与链式保存时,其天面( ).A.必须是连绝的 B.一定是不连绝的C.部分天面必须连绝D.连绝与可均不妨5.正在一个具备n个结面的有序单链表中插人一个新的结面,使得链表仍旧有序,该算法的时间搀纯度是( ).A.O(long2n) B.O(l) C.O(n2)D.O (n)6.线性表是( ).A.一个有限序列,不妨为空B.一个有限序列,不不妨为空C.一个无限序列,不妨为空D.一个无限序列,不不妨为空7.正在一个少度为n的程序表中,背第i个位子(0一1<n+1)拔出一个新元素时,需要背后移动( )个元素.A.n-i B.n-i+1 C.n-i-1 D.i+18.如果某链表中最时常使用的支配是与第i个结面及其前驱,则采与( )保存办法最节省时间.A.单链表 B.单背链表 C.单循环链表D.程序表9.一个程序保存线性表的第一个元素的保存天面是90,每个元素的少度是2,则第6个元素的保存天面是().A.98 B.100 C.102 D.10610.正在程序保存的线性表(a1……a n)中,简略任性一个结面所需移动结面的仄稳移动次数为( )A.n B.n/2 C.(n-1)/2 D.(n+l)/2 11.正在线性表的下列保存结构中,读与第i个元素泯灭的时间最少的是().A.单链表 B.单链表 C.循环链表D.程序表12.若某链表中最时常使用的支配为正在末尾一个结面之后拔出一个结面战简略末尾一个结面,则采与()保存办法最节省时间.A.单链表 B.单链表 C.单循环链表D.戴头结面的单循环链表13.正在单链表中简略指针p所指结面的后继结面,则真止()支配.A.p->next=p->next->nextB.p->next=p->nextC.p=p->next->nextD.p=p->next; p->next=p->next->next14.正在一个单链表中,已知q所指结面是p所指结面的前驱,若正在q战p之间拔出s所指的结面,则真止()支配.A.s->next=p->next; p->next=s;B.q->next=s; s->next=p;C.p->next=s->next; s->next=p;D.p->next=s; s->next=q;15.正在单链表中附加头结面的手段是为了().A.包管单链表中起码有一个节面B.标记单链表中尾结面的位子C.便当运算的真止D.道明单链表是线性表的链式保存16.循环单链表的主要便宜是().A.不再需要头指针了B.从表中任性一个结面出收皆能扫描到所有链表C.已知某个结面的位子后,不妨简单找到它的前驱D.正在举止拔出、简略支配时,能更好天包管链表不竭启17.非空的循环单链表L的尾结面p谦脚().A.p->next=NULL B.p=NULL C.p->next=L D.p=L18.正在单背循环链表中,正在p指针所指背的结面前拔出一个指针q所指背的新结面,其建改指针的支配是( ).注:单背链表的结面结构为(prior,data,next). 供采用的问案:A.p->prior=q;q->next=p;p->prior->next=q; q->prior=q;B.p->prior=q;p->prior->next=q; q->next=p;q->prior=p->prior;C.q->next=p;q->prior=p->prior;p->prior->next=q; p->prior=q;D.q->prior=p->prior;q->next=p;p->prior=q;p->prior=q;19.正在单背链表保存结构中,简略p所指的结面时须建改指针().A.p->prior->next=p->next; p->next->prior=p->prior;B.p->prior=p->prior->prior; p->prior->next=p;(删p 的前趋)C.p->next->prior=p; p->next=p->next->next;D.p->next= p->prior->prior; p->prior= p->next->next;二、挖空题1.线性表(Linear List)是最简朴、最时常使用的一种数据结构.线性表中的元素存留着__________的相互闭系.(一对付一)2.线性表中有且仅有一个启初结面,表中有且仅有一个末端结面,除启初结面中,其余每个元素有且仅有一个__________,除末端结面中,其余每个元素有且仅有一个______.3.线性表是n(n>=0)个数据元素的________.其中n为数据元素的个数,定义为线性表的__________.当n为整时的表称为_________.4.所谓程序表(Sequential LISt)是线性表的__________,它是将线性表中的结面按其____________依次存搁正在内存中一组连绝的保存单元中,使线性表中相邻的结面存搁正在____________的保存单元中.5.单链表不央供逻辑上相邻的保存单元正在物理上也一定要相邻.它是调配一些_______的保存单元去保存线性表中的数据元素,那些保存单元不妨分别正在内存中的_________的位子上,它们正在物理上不妨是一片连绝的保存单元,也不妨是__________的.果此正在表示线性表那种数据结构时,必须正在保存线性表元素的共时,也保存线性表的.6.线性表的链式保存结构的每一个结面(Node)需要包罗二个部分:一部分用去存搁元素的数据疑息,称为结面的_________;另一部分用去存搁元素的指背间接后继元素的指针(即间接后继元素的天面疑息),称为________大概____________.7.线性链表的逻辑闭系是通过每个结面指针域中的指针去表示的.其逻辑程序战物理保存程序不再普遍,而是一种_________保存结构,又称为__________.8.如果将单链表末尾一个结面的指针域改为存搁链表中的头结面的天面值,那样便形成了______________.9.为了不妨赶快天查找到线性表元素的间接前驱,可正在每一个元素的结面中再减少一个指背其前驱的指针域,那样便形成了___________.10.单背链表某结面的指针P,它所指背结面的后继的前驱与前驱的后继皆是p_______.11.正在单链表中,简略指针P所指结面的后继结面的语句是____________.12.正在单循环链表中,简略指针P所指结面的语句序列是P->prior->next=p->next及__________.13.单链表是___________的链接保存表示.14.不妨使用___________表示树形结构.15.背一个少度为n的背量的第i个元素(l≤i≤n+1)之前插人一个元素时,需背后移动__________个元素. 16.简略一个少度为n的背量的第i个元素(l≤i≤n)时,需背前移动_______个元素.17.正在单链表中,正在指针P所指结面的后里插人一个结面S的语句序列是__________.18.正在单循环链表中,正在指针P所指结面前插人指针S 所指的结面,需真止语句_______.19.与出广义表A=((x,(a,b,c,d))中本子c的函数是_________.20.正在一个具备n个结面的有序单链表中插人一个新结面并使之仍旧有序的时间搀纯度为_______________. 21.写出戴头结面的单背循环链表L为空表的条件________________.22.线性表、栈战行列皆是_________________结构. 23.背栈中插人元素的支配是先移动栈_____________针,再存人元素.1. 一对付一2. 间接前驱、间接后继3. 有限序列、少度、空表4. 程序保存结构、逻辑程序、天面相邻5. 任性、任性、不连绝、逻辑闭系6. 数据域、指针域、链域7. 非程序、非程序映像8. 循环链表9. 单背链表10. 所指背的结面自己11. P->next=p->next->next12. P->next->prior=P->prior13. 线性表14. 单链表15. n-i+116. n-i17. S->next=P->next; P->next=S18. p->prior->next=S;s->prior=p->prior;s->next=p;p->prior=s;19. head(tail(tail((head(tail(head(A))))))20. O(n)21. (L==L->Next) && (L==L->Prior)22. 线性23. 顶三、推断题1.线性表采与链表保存时,结面战结面里里的保存空间不妨是不连绝的.(×)2.正在具备头结面的链式保存结构中,头指针指背链表中的第一个数据结面.(×)3.程序保存的线性表不不妨随机存与.(×)4.单链表不是一种随机存与结构.()5.程序保存结构线性表的拔出战简略运算所移动元素的个数与该元素的位子无闭.(×)6.程序保存结构是动背保存结构,链式保存结构是固态保存结构.(×)7.线性表的少度是线性表所占用的保存空间的大小.(×) 8.单循环链表中,任性一结面的后继指针均指背其逻辑后继.(×)9.线性表的惟一保存形式是链表.(×)1. 过得:链表保存中,结面之间不妨连绝也不妨不连绝,然而结面里里是连绝的.2. 过得:头指针指背头结面而不是数据结面.3. 过得:程序保存的线性表不妨随机存与.4. 精确.5. 过得.6. 过得:程序保存结构是固态保存结构,链式保存结构是动背保存结构.7. 过得:先止表的少度是线性表中结面的个数.8. 过得:注意末尾一个结面.9. 过得:也不妨有程序保存的形式.第三章栈战行列一、采用题l.一个栈的序列是:a,b,c,d,e,则栈的不可能输出的序列是().A.a,b,c,d,e B.d,e,c,b,a C.d,c,e,a,b D.e,d,c,b,a2.若一个栈的输人序列是1,2,3,…,n,输出序列的第一个元素是n,则第k个输出元素是().A.k B.n-k-1 C.n-k+1 D.不决定3.判决一个栈S(最多有n个元素)为空的条件是(). A.S->top!=0 B.S->top= =0 C.S->top!=n D.S->top= =n4.判决一个栈S(最多有n个元素)为谦的条件是(). A.S->top!=0 B.S->top= =0 C.S->top!=n D.S->top= =n5.背一个栈顶指针为top的不戴头结面的链栈中插人一个*S结面的时间,应当真止语句().A.top->next=S; B.S->next=top;top=S;C.S->next=top->next;top->next=S;D.S->next=top;top=S->next;6.背一个戴头结面、栈顶指针为top的链栈中插人一个*S 结面的时间,应当真止语句().A.top->next=S; B.S->next=top;top=S;C.S->next=top->next;top->next=S; D.S->next=top;top=S->next;7.判决一个行列Q(最多有n个元素)为空的条件是().A.Q->rear-Q->front= =n B.Q->rear-Q->front+1= =nC.Q->rear = = Q->front D.Q->rear +1= = Q->front 8.判决一个行列Q(最多有n个元素)为谦的条件是(). A.Q->rear-Q->front= =n B.Q->rear-Q->front+1= =n C.Q->rear = = Q->front D.Q->rear +1= = Q->front 9.判决一个循环行列Q(最多有n个元素)为空的条件是().A.Q->rear = = Q->front B.Q->rear = = Q->front+l C.Q->front= =(Q->rear +1)%n D.Q->front= =(Q->rear -1)%n10.判决一个循环行列Q(最多有n个元素)为谦的条件是().A.Q->rear = = Q->front B.Q->rear = = Q->front+lC.Q->front= =(Q->rear +1)%n D.Q->front= =(Q->rear -1)%n11.正在一个链行列中,假定front战rear分别为头指针战尾指针,则拔出一个结面*S的支配是().A.front=front->next B.S->next=rear;rear=S C.rear->next=S;rear=S D.S->next=front;front=S 12.正在一个链行列中,假定front战rear分别为头指针战尾指针,简略一个结面的支配是().A.front=front->next B.rear=rear->nextC.rear->next=front D.front->next=rear13.栈与行列皆是().A.链式保存的线性结构B.链式保存的非线性结构C.节制存与面的线性结构D.节制存与面的非线性结构14.若进栈序列为l,2,3,4,则()不可能是一个出栈序列.A.3,2,4,1 B.l,2,3,4 C.4,2,3,1 D.4,3,2,l15.正在办理估计机主机与挨印机之间速度不匹配问题时常常树坐一个挨印数据缓冲区,主机将要输出的数据依次写人该缓冲区,而挨印机则从该缓冲区中与走数据挨印.该缓冲区该当是一个()结构.A.堆栈B.行列 C.数组 D.线性表1. C2. C3. B4. D5. B6. C7. C8. A9. A 10. C11. C12. A 13. C 14. C 15. B二、挖空回1.栈(stack)是规定正在________一端举止插人大概简略支配的线性表.正在栈中,允许插人战简略支配的一端称为__________,而另一端称为_________.不含元素的栈称为_______.2.正在栈的运算中,栈的插人支配称为________大概________,栈的简略支配称为_________大概__________. 3.根据栈的定义,每一次进栈的元素皆正在本___________之上,并成为新的__________;每一次出栈的元素经常目前的_____________,果此末尾进栈的元素经常__________,所以栈也称为___________线性表,简称为____________表.4.栈是一种支配受到节制的线性表,是一种特殊的线性表,果此栈也有__________战_________________二种保存结构,分别称为______________战___5.当栈谦的时间,再举止人栈支配便会爆收____________,那种情况的溢出称为___________;当栈空的时间,如果再举止出栈支配,也会_____________,那种情况下的溢出称为__________________.6.栈的链式保存结构简称为____________,是一种__________________.7.人们凡是估计用到的表黑式皆被称为____________,那是由于那种算术表黑式的运算符被置于二个支配数中间. 8.估计机中常常使用___________,那是一种将运算符置于二个支配数后里的算术表黑式.那种表黑式是由波兰科教家开维奇提出的,果此又称为_____________9.行列(Queue)也是一种___________,然而它与栈分歧,行列中所有的插人均规定正在表的一端举止,而所有的简略则规定正在表的另一端举止.允许插人的一端称为_________,允许简略的一端称为_______________. 10.行列的个性是_________,果此行列又被称为_______________.的线性表,大概称为_________________表.11.行列的_________又称为__________,是用一组天面连绝的保存单元依次存搁行列中的元素.12.由于行列中的元素时常变更,对付于行列的简略战插人分别正在队头战队尾举止,果此需要树坐二个指针分别指背__________战__________,那二个指针又称为__________战_____________.13.循环程序行列(Circular Sequence Queue)时常简称为___________,它是将保存程序行列的保存天区瞅成是一个尾尾贯串的一个环,将要队尾战队尾元素对接起去产死一个环形表.尾尾贯串的状态是通过数教上的_________________去真止的.14.正在算法大概步调中,当一个函数间接调用自己大概通过一系列语句间接调用自己的时间,则称那个函数为,也称为____________.函数间接调用自己,则称为__________;当一个函数通过另一个函数去调用自己则称为_________________.15.正在循环行列中确定:当Q->rear= =Q->front的时间循环行列为___________,当(Q->rear+1)%MAXSIZE=front的时间循环行列为____________________.16.用链表办法表示的行列称为____________________. 17.已知栈的输人序列为1,2,3,…,n,输出序列为a1,a2,…,an,切合a2= =n的输出序列公有__________________.18.一个栈的输人序列是12345,则栈的输出序列为43512是________(挖是可大概).19.一个栈的输人序列是12345,则栈的输出序列为12345是_________(挖是可大概).20.设sq[1..maxsize]为一个程序保存的栈,变量top指示栈顶元素的位子,则做进栈支配的条件是______________.21.设sq[1..maxsize]为一个程序保存的栈,变量top指示栈顶元素的位子,如果把栈顶元素弹出并支到X中,则需真止语句______________.22.栈的个性是__________________.23.对付栈举止退栈时的支配是先与出元素,后移动_________.24.设s[1..max]为一个程序保存的栈,变量top指示栈顶位子,栈为谦的条件是____.25.设链栈的栈顶指针为top,则栈非空的条件是___________.26.已知循环行列用数组data[1...n]保存元素值,用f,r分别动做头尾指针,则目前元素个数为____________. 27.正在一个循环行列中,队尾指针指背队尾元素的________位子.(前一个大概后一个)28.行列中允许举止简略的一端称为_______________. 29.链行列本量上是一个共时戴有头指针战尾指针的单链表(1..n),尾指针指背该单链表的第___________个元素.30.设单背链表链列为lq,lq的头指针为lq.Front,尾指针为lq.Rear,则行列为空的条件是____________.31.从循环行列中简略一个元素,其支配是先与出一个元素,后移动____________32.行列中允许举止拔出的一端称为_________.1. 表尾、栈顶、栈底、空栈2. 进栈、进栈、退栈、出栈3. 栈顶元素、栈顶元素、栈顶元素、最先出栈、后进先出、LIFO4. 程序、链式、程序栈、链栈5. 溢出、上溢、溢出、下溢6. 链栈、特殊的单链表7. 中缀表黑式8. 后缀表黑式、波兰式9. 特殊的线性表、队尾、队头10. 进步先出、进步先出、FIFO11. 程序保存结构、程序行列12. 队头元素、队尾元素、队头指针、队尾指针13. 循环行列、与模运算14. 递归函数、自调用函数、间接递归调用、间接递归调用15. 空、谦16. 链行列17. n-118. 不可能的19. 大概的20. top!=maxsize21. x=sq[top]; top=top-122. 进步后出23. 栈顶指针24. top==max25. top!=nil26. (n+r-f)mod n27. 前一个28. 队尾29. n30. lq->front==lq->rear31. 栈顶指针32. 队尾三、推断题1.栈战行列皆是节制存与面的线性结构.()2.分歧的进栈战出栈推拢大概得到相共输出序列.()3.与消递归一定要用栈.()4.循环行列是程序保存结构.()5.循环行列不会爆收溢出.()6.循环行列谦的时间rear= =front.()7.正在对付链行列(戴头结面)搞出队支配时不会改变front指针的值.()1. 精确.2. 过得:分歧的进栈战出栈推拢得到分歧输出序列.3. 过得:某些情况如尾递归不妨变换为递推的形式.4. 精确.5. 过得:循环行列不会爆收假溢出.6. 过得.7. 精确.四、概括题1.设有4个元素A、B、C战D进栈,给出它们所有大概的出栈秩序.大概的出栈序列:(共14个)ABCD ABDC ACBD ACDB ADCBBACD BADC BCAD BCDA BDCACBAD CBDA CDBADCBA不可能的出栈序列:(共10个)ADBCBDACCABD CADB CDABDABC DACB DBAC DBCA DCAB习题四一、采用项l.空串与空格串().A.相共 B.不相共 C.大概相共 D.无法决定2.设有二个申S1与S2,供串S2正在S1中尾次出现位子的运算称做().A.对接 B.供子串 C.模式匹配 D.判子串3.串与一般的线性表相比较,它的特殊性体目前().A.程序的保存结构 B.链接的保存结构C.数据元素是一个字符 D.数据元素不妨任性4.设有串S=‘Computer’,则其子串的数目是().A.36 B.37 C.8 D.91. B2. C3. C4. B二、境空题1.串是由整个大概多个字符组成的____________.常常记做:s=“c1,c2,…,cn”(n=>0),其中,S称为________;串中的Ci(1<=i<=n)不妨是字母、数字字格大概其余字符.用单引号括起去的部分是_________.即串S 的真量.2.串中字符的个数称为串的________.3.不含有所有字符的串称为_________,它的少度为___________.4.由一个大概多个空格形成的串称为____________,它的少度为___________.5.串中任性多个连绝字符组成的子序列称为该串的____________;包罗___________的串称为主串.6.字符正在序列中的序号称为该字符正在串中的________________.7.二个字符串相等是指二个字符串的,也便是道那二个字符串不然而__________,而且对付应位子上的字符也.8.二个串的比较本量上是_________的比较.二个串从第一个位子上的字符启初举止比较,当第一次出现_____________大的串为大,若比较历程中出现一个字符串中断的情况,则另一个串为_________________.9.串的_______________便是把串所包罗的字符序列,依次存人连绝的保存单元中去.10.有些估计机系统中为了充分利用保存空间,允许一个保存单元不妨存搁多个字符,串的那种保存办法是一种__________________.11.串的______________是以保存单元为保存单位,一个保存单元中只存搁__________.正在那种情况下,纵然一个保存单元能存搁多个字符,那时间也只存搁________________.12.串正在非紧缩办法下,串少度的保存是隐式的,__________即串的少度.13.一些估计机是以字节为存与单位,恰好一个字符占用一个字节,自然产死了每个保存单元存搁__________的调配办法,那种办法便是一种__________.那种办法普遍不需要存搁____________的保存单元,而需要以步调中各变量值所、的字符为中断符.14.串的链式保存结构是将保存天区别成一系列大小相共的结面,每个结面有二个乡:____________域战________域.其中___________域用于存搁数据,。
数据结构习题集
习题集一、填空题⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。
⑶ 从逻辑关系上讲,数据结构主要分为()、()、()和()。
⑷ 数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。
⑸ 算法具有五个特性,分别是()、()、()、()、()。
⑹ 算法的描述方法通常有()、()和()三种,⑺ 在一般情况下,一个算法的时间复杂度是()的函数。
⑻ 设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*logn,则表示成数量级的形式为()。
(9)顺序存储结构的特点是(),链接存储结构的特点是()。
(10) 在顺序表中,等概率情况下,插入和删除一个元素平均需移动()个元素,具体移动元素的个数与()和()有关。
(11) 顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是()。
(12) 设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。
(13) 单链表中设置头结点的作用是()。
(14) 非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。
(15)在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是();删除开始结点的操作序列为()。
(16) 一个具有n个结点的单链表,在指针p所指结点后插入一个新结点的时间复杂度为();在给定值为x的结点后插入一个新结点的时间复杂度为()。
(17)已知一维数组A采用顺序存储结构,每个元素占用4个存储单元,第9个元素的地址为144,则第一个元素的地址是()。
A 108B 180C 176D 112(18)在长度为n的线性表中查找值为x的数据元素的时间复杂度为:()。
A O(0)B O(1)C O(n)D O(n2)(19)在一个长度为n的顺序表的第i(1≤i≤n+1)个元素之前插入一个元素,需向后移动()个元素,删除第i(1≤i≤n)个元素时,需向前移动()个元素。
(完整word版)数据结构题集答案
数据结构题集第一章绪论一、单选题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。
算法的优劣与算法的描述语言无关,但与使用的计算机有关【.×】。
(完整版)数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。
A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。
A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。
for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。
for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。
int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。
2. 数据的存储结构被分为__________、_________、__________和__________四种。
3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。
4. 一种抽象数据类型包括__________和__________两个部分。
5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
数据结构习题集及答案
第一章一、填空题1 数据元素是数据的基本单位,..数据项.......是具有独立含义的最小标识单位。
3 数据之间的关系(逻辑结构)有四种集合、线性结构、树形结构、网状结构或图状结构,可分为....................... ....、...................两大类。
4 数据的存储结构包括..顺序存储结构.....................、..链式存储结构..........................二、问答题1.什么是数据结构?什么是数据类型?答:数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作等的学科。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
2.叙述算法的定义与特性。
答:算法是对待定问题求解步骤的一种描述,他是指令的有限序列,其中每一条指令表示一个或多个操作。
一个算法具有以下5个重要特性:1)、有穷性 2)、确定性3)、可行性 4)、输入 5)、输出3. 叙述算法的时间复杂度。
答:算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时量度,记作T(n)=O(f(n))他表示随着问题规模n的增大,算法执行时间增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。
三、判断题(在各题后填写“√”或“×”)1. 线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。
(×)2.下列几种数量级从小到大的排列顺序为:O(1) 、O(logn)、O(n) 、O(nlogn) 、O(n2) 、O(n3 ) 、O(2n)。
(√)四、1.计算机执行下面的语句时,语句s的执行频度(重复执行的次数)为 _______ 。
FOR(i=l;i<n-l;i++)FOR(j=n;j>=i;j--)s;2.有下列运行时间函数:(1)T1 (n)=1000; (2)T2(n)=n2+1000n; (3)T3(n)=3n3+100n2+n+1;分别写出相应的大O表示的运算时间。
数据结构习题集和答案
数据结构习题集和答案第1章绪论1、填空题1.常见的数据结构有集合,_线性__结构,__树形___结构,__图形__结构等四种。
2.常见的存储结构有__顺序存储_______结构,__链式存储____结构等两种。
3.数据的基本单位是_数据元素___,它在计算机中是作为一个整体来处理的。
4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,__线性结构____和__非线性结构___。
2、选择题1. 算法的计算量的大小称为计算的(B)。
A.效率B. 复杂性C. 现实性D. 难度2. 算法的时间复杂度取决于(C)A.问题的规模 B. 待处理数据的初态 C. A和B D. 以上都不对3.计算机算法指的是(1)(c),它必须具备(2)(B)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性4. 下面关于算法说法错误的是(D)A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的3、应用题1、给出以下算法的时间复杂度.void fun(int n){int i=1,k=100;while(i<n)< bdsfid="88" p=""></n)<>{k=k+1;i=i+2;}}时间复杂度为____O(n)_____。
2、给出以下算法的时间复杂度.void fun2(int n){int i=1,k=100;while(i<n)< bdsfid="100" p=""></n)<>{i=i*10;k=k+1;}}时间复杂度为____O(log n)___________。
《数据结构》习题集
《数据结构》习题集第一章序论思考题:1。
1简述下列术语:数据、数据元素、数据对象、数据结构、存储结构、数据类型、抽象数据类型作业题:1。
2设有数据结构(D,R),其中D={d1, d2, d3, d4}R={r1,r2}r1={<d1, d2〉,<d2,d3>,<d3,d4〉,〈d1, d4>,〈d4,d2>, 〈d4, d1〉}r2={(d1, d2),(d1,d3),(d1, d4),(d2, d4), (d2, d3)}试绘出其逻辑结构示意图。
1。
3设n是正整数。
试写出下列程序段中用记号“△”标注的语句的频度: (1)i=1; k=0;while(i〈=n-1){△k+=10*i;i++;}(2) i=1; k=0;do {△k+=10*i;i++;}while(i〈=n-1)(3)i=1; k=0;do {△k+ = 10*i; i++;}while(i==n);(4) i=1; j=0;while(i+j≤n) {△if(i〈j) i++;else j++;}(5) x=n; y=0; //n是不小于1的常数while(x〉=(y+1)*(y+1)){△y++;}(6)x=91; y=100;while ( y>0 ){△if(x>100) { x—=10; y——; }else x++ ;}(7) for( i=0; i〈n; i++)for( j=i; j〈n; j++)for( k=j; k〈n; k++)△x+=2;1。
4 试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值。
1.5 已知k阶斐波那契序列的定义为:f0=0,f1=0,……,f k—2=0,f k—1=1;f n=f n—1+f n-2+……+f n-k, n=k,k+1,……试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。
数据结构课程习题集第1页共25页
《数据结构》课程习题集第 1 页(共 25 页)一、. 选择题. 1. 算法的计算量的大小称为计算的()。
A.效率 B. 复杂性 C. 现实性 D. 难度.2. 算法的时间复杂度取决于().A.问题的规模 B. 待处理数据的初态 C. A和B 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. 设一个栈的输入序列是 1,2,3,4,5,则下列序列中,是栈的合法输出序列的是()。
A. 5 1 2 3 4B. 4 5 1 3 2C. 4 3 1 2 5D. 3 2 1 5 4.12. 某堆栈的输入序列为a, b,c ,d,下面的四个序列中,不可能是它的输出序列的是()。
数据结构综合习题集(含答案)
... 数据结构习题集一、选择题一、选择题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==rearB.front!=NULLC.rear!=NULLD.front==NULL 6.若构造一棵具有n 个结点的二叉排序树,最坏的情况下其深度不会超过(B )A.n/2B.nC.(n+1)/2D.n+1 7.将两个各有n 个元素的有序表合并成一个有序表,其最少的比较次数为(A )A.nB.2n-1C.2nD.n 2 8.设顺序表有19个元素,第一个元素的地址为200,且每个元素占3个字节,则第14个元素的存储地址为(B )A.236B.239C.242D.245 9.一个栈的入栈序列是a,b,c,d,e ,则栈的输出序列不可能是(A )A.dceabB.decbaC.edcbaD.abcde 10.元素大小为1个单元,容量为n 个单元的非空顺序栈中,以地址高端为栈底,以top 作为栈顶指针,则出栈处理后,top 的值应修改为(D )A.top=topB.top=n-1C.top=top-1D.top=top+1 11.设有一个10阶的对称矩阵A ,采用压缩存储方式以行序为主序存储,a 00为第一个元素,其存储地址为0,每个元素占有1个存储地址空间,则a 45的地址为(的地址为( B )A.13B.35C.17D.36 12.栈和队列( C ) A.共同之处在于二者都是先进先出的特殊的线性表共同之处在于二者都是先进先出的特殊的线性表B.共同之处在于二者都是先进后出的特殊的线性表共同之处在于二者都是先进后出的特殊的线性表C.共同之处在于二者都只允许在顶端执行删除操作共同之处在于二者都只允许在顶端执行删除操作D.没有共同之处没有共同之处13.含有n 个结点的二叉树用二叉链表表示时,空指针域个数为(C )A.n-1B.nC.n+1D.n+2 14.对一棵有100个结点的完全二叉树按层序编号,则编号为49的结点,它的左孩子的编号为(号为( B )A.99B.98C.97D.50 15.在一个图中,所有顶点的度数之和与图的边数的比是( C)A.1∶2B.1∶1C.2∶1D.4∶1 16.在一个具有n 个顶点的无向图中,要连通全部顶点至少需要的边数为(A )A.n-1B.nC.n+1D.n/2 17.在一个具有n 个顶点的无向图中,每个顶点度的最大值为( B )A.nB.n-1C.n+1D.2(n-1) 18.若采用邻接表存储结构,则图的广度优先搜索类似于二叉树的(D )A.先序遍历B.中序遍历中序遍历C.后序遍历D.层次遍历层次遍历19.对线性表进行二分查找时,要求线性表必须( C)A.以顺序方式存储以顺序方式存储B.以链式方式存储以链式方式存储C.以顺序方式存储,且结点按关键字有序排列以顺序方式存储,且结点按关键字有序排列D.以链接方式存储,且结点按关键字有序排列以链接方式存储,且结点按关键字有序排列20.二分查找算法的时间复杂度是(.二分查找算法的时间复杂度是( D )A.O(n 2)B.O(nlog 2n)C.O(n)D.O(log 2n) 21.采用排序算法对n 个元素进行排序,其排序趟数肯定为n-1趟的排序方法是(趟的排序方法是( C )A.插入和快速插入和快速B.冒泡和快速冒泡和快速C.选择和插入选择和插入D.选择和冒泡选择和冒泡22. 闭散列表中由于散列到同一个地址而引起的“堆积”现象,是( B)A.由同义词之间发生冲突引起的由同义词之间发生冲突引起的B.由非同义词之间发生冲突引起的由非同义词之间发生冲突引起的C.由同义词之间或非同义词之间发生冲突引起的由同义词之间或非同义词之间发生冲突引起的D.由散列表“溢出”引起的引起的 23.在对查找表的查找过程中,若被查找的数据元素不存在,则把该数据元素插入到集合中。
数据结构习题集
数据结构习题集数据结构试题一、单项选择1、若某线性表中最常用的操作是在最后一个元素之前插入和删除元素,则采用___________最节省运算时间.A、单链表B、仅有头指针的单循环链表C、仅有尾指针的单循环链表D、双链表2、哈夫曼树的带权路径长度WPL等于___C________.A、除根以外的所有结点的权植之和B、所有结点权值之和C、各叶子结点的带权路径长度之和D、根结点的值3、设输入序列为1,2,3,4,5,借助一个栈不可能得到的输出序列是___________.A、1,2,3,4,5B、1,4,3,2,5C、4,1,3,2,5D、1,3,2,5,44、20个结点的完全二叉树,其高度为___________.A、3B、2C、4D、55、栈和队列都是___________.A、顺序存储的线性结构B、链式存储的线性结构C、限制存储点的线性结构D、限制存储点的非线结构6、已知完全二叉树有30个结点,则整个二叉树有___________个度为1的结点.A、0B、1C、2D、不确定7、对于N个结点的完全无向图,其边数是___________A、NB、N2C、N(N+1)/2D、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、JB、2JC、J+1D、不能确定13、若图G中()是有向的,则称此图为有向图.A、至少有一条边B、每一条边C、有一条边D、有些边14、在二叉树中,若已知先根序遍历和后根序遍历顺序,则()A、能唯一确定一棵二叉树B、不能唯一确定一棵二叉树C、能唯一确定二棵二叉树D、不存在这样的遍历15、冒泡排序是()的排序方法A、稳定B、不稳定C、外部D、选择16、归并排序是()的排序方法A、稳定B、不稳定C、外部D、选择17、对于顺序存储的队列,存储空间大小为n,头指针为F,尾指针为R.若在逻辑上看一个环,则队列中元素的个数为().A、R-FB、n+R-FC、(R-F+1)mod nD、(n+R-F)mod n18、用9个数据构造出的霍夫曼树共有()个结点A、9B、18C、16D、1719、N个结点的顺序查找的平均查找次数为()A、NB、N/2 C(N+1)/2 D、与N无关20、在无向图的邻接链表中,若表结点个数为M,则边数为()A、MB、M+1C、与M无关D、M/221、设输入序列为1,2,3,4,5,6,借助一个栈不可能得到的输出序列是().A、1,2,3,4,5,6B、1,4,3,2,5 ,6C、4,1,3,2,5,6D、1,3,2,5,4 ,622、栈和队列都是().A、散列存储的线性结构B、链式存储的线性结构C、限制存储点的线性结构D、索引存储的非线性结构23、已知完全二叉树有2008个结点,则整个二叉树有()个度为1的结点.A、0B、1C、2D、不确定24、下列排序方法中,最好情况下,时间复杂度最坏的算法是().A、选择排序B、归并排序C、冒泡排序D、直接插入排序25、下列排序方法中,排序所花费时间复杂度最小的算法是___________。
数据结构试题集(包含答案 完整版)
第一章概论一、选择题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<m;i++)for(j=0;j<n;j++)a[i][j]=i*j;A. O(m2)B. O(n2)C. O(m*n)D.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<n){i++;s+=i;}A. O(n)B. O(n2)C. O(log2n)D. O(n3)11、抽象数据类型的三个组成部分分别为( A)。
A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是()。
数据结构试题集含答案
程序复杂性3、具有线性结构的数据结构是 D ;A. 图B. 树C. 广义表D. 栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、B等5个特性;A. 可执行性、可移植性和可扩充性B. 可执行性、有穷性和确定性C. 确定性、有穷性和稳定性D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是C ;fori=0;i<m;i++forj=0;j<n;j++aij=ij;A. Om2B. On2C. OmnD. Om+n6、算法是 D ;A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为3n+nlog2n+n2+8,其时间复杂度表示 C ;A. OnB. Onlog2n C. On2 D. Olog2n8、下面程序段的时间复杂度为 C ;i=1;whilei<=ni=i3;A. OnB. O3nC. Olog3n D. On39、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的 B 和运算等的学科;A. 结构B. 关系C. 运算D. 算法10、下面程序段的时间复杂度是 C ;i=s=0;whiles<n{i++;s+=i;}A. OnB. On2C. O√nD. On311、抽象数据类型的三个组成部分分别为 A ;A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是 A ;A. 正确性算法应能正确地实现预定的功能B. 易读性算法应易于阅读和理解,以便调试、修改和扩充C. 健壮性当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果D. 高效性即达到所需要的时间性能13、下列程序段的时间复杂度为 B ;x=n;y=0;whilex>=y+1y+1y=y+1;A. OnB. )(nO C. O1 D. On2二、填空题1、程序段“i=1;whilei<=n i=i2;”的时间复杂度为 Olog2n ;2、数据结构的四种基本类型中,树形结构的元素是一对多关系;三、综合题1、将数量级O1,ON,ON2,ON3,ONLOG2N,OLOG2N,O2N按增长率由小到大排序;答案: O1 < Olog2N < ON < ONlog2N < ON2 < ON3 < O2N第二章线性表一、选择题1、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度C ;A. Olog2n 1 C. On n22、若一个线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用A 存储方式最节省时间;A. 顺序表B. 单链表C. 双链表D. 单循环链表3、具有线性结构的数据结构是 D ;A. 图B. 树C. 广义表D. 栈4、在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需向后移动 B 个元素;A. n-iB. n-i+1C. n-i-1D. i5、非空的循环单链表head的尾结点p满足 A ;A. p->next==headB. p->next==NULLC. p==NULLD. p==head6、链表不具有的特点是 A ;A. 可随机访问任一元素B. 插入删除不需要移动元素C. 不必事先估计存储空间D. 所需空间与线性表长度成正比7、在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是 C ;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、线性表采用链式存储时,结点的存储地址 C ;A. 必须是连续的B. 必须是不连续的C. 连续与否均可D. 和头结点的存储地址相连续9、在一个长度为n的顺序表中删除第i个元素,需要向前移动 A 个元素;A. n-iB. n-i+1C. n-i-1D. i+110、线性表是n个 C的有限序列;A. 表元素B. 字符C. 数据元素D. 数据项11、从表中任一结点出发,都能扫描整个表的是 C ;A. 单链表B. 顺序表C. 循环链表D. 静态链表12、在具有n个结点的单链表上查找值为x的元素时,其时间复杂度为 A ;A. OnB. O1C. On2D. On-113、线性表L=a1,a2,……,an,下列说法正确的是 D ;A. 每个元素都有一个直接前驱和一个直接后继B. 线性表中至少要有一个元素C. 表中诸元素的排列顺序必须是由小到大或由大到小D. 除第一个和最后一个元素外,其余每个元素都由一个且仅有一个直接前驱和直接后继14、一个顺序表的第一个元素的存储地址是90,每个元素的长度为2,则第6个元素的存储地址是 B ;A. 98B. 100C. 102D. 10615、在线性表的下列存储结构中,读取元素花费的时间最少的是 D ;A. 单链表B. 双链表C. 循环链表D. 顺序表16、在一个单链表中,若删除p所指向结点的后续结点,则执行 A ;A. p->next=p->next->next;B. p=p->next;p->next=p->next->next;C. p =p->next;D. p=p->next->next;17、将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为 C ;A. O1B. OnC. OmD. Om+n18、线性表的顺序存储结构是一种 A 存储结构;A. 随机存取B. 顺序存取C. 索引存取D. 散列存取19、顺序表中,插入一个元素所需移动的元素平均数是 D ;A. n-1/2B. nC. n+1D. n/210、循环链表的主要优点是 D ;A. 不再需要头指针B. 已知某结点位置后能容易找到其直接前驱C. 在进行插入、删除运算时能保证链表不断开D. 在表中任一结点出发都能扫描整个链表11、不带头结点的单链表head为空的判定条件是 A ;A. head==NULLB. head->next==NULL 带头结点判定条件C. head->next==head 循环链表判定条件D. head=NULL12、在下列对顺序表进行的操作中,算法时间复杂度为O1的是 A ;A. 访问第i个元素的前驱1<ni≤B. 在第i个元素之后插入一个新元素n≤1≤iC. 删除第i个元素n≤i1≤D. 对顺序表中元素进行排序13、已知指针p和q分别指向某单链表中第一个结点和最后一个结点;假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为 A ;A. q->next=s->next;s->next=p;B. s->next=p;q->next=s->next;C. p->next=s->next;s->next=q;D. s->next=q;p->next=s->next;14、在以下的叙述中,正确的是 C ;A. 线性表的顺序存储结构优于链表存储结构B. 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C. 线性表的链表存储结构适用于频繁插入/删除数据元素的情况D. 线性表的链表存储结构优于顺序存储结构15、在表长为n的顺序表中,当在任何位置删除一个元素的概率相同时,删除一个元素所需移动的平均个数为 A ;A. n-1/2B. n/2C. n+1/2D. n16、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入一个结点s,则执行 C ;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;17、在单链表中,指针p指向元素为x的结点,实现删除x的后继的语句是 B ;A. p=p->next;B. p->next=p->next->next;C. p->next=p;D. p=p->next->next;18、在头指针为head且表长大于1的单循环链表中,指针p指向表中某个结点,若p->next->next==head,则 D ;A. p指向头结点B. p指向尾结点C. p的直接后继是头结点D. p的直接后继是尾结点1、设单链表的结点结构为data,next;已知指针p指向单链表中的结点,q指向新结点,欲将q插入到p结点之后,则需要执行的语句:q->next=p->next ; p->next = q ;二、填空题答案:q->next=p->next p->next=q2、线性表的逻辑结构是线性结构 ,其所含元素的个数称为线性表的长度;答案:线性结构长度3、写出带头结点的双向循环链表L为空表的条件 ;答案:L->prior==L->next==L4、带头结点的单链表head为空的条件是 ;答案:head->next==NULL5、在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q = p->next;p->next= _q->next ___;三、判断题1、单链表不是一种随机存储结构;对2、在具有头结点的单链表中,头指针指向链表的第一个数据结点;错3、用循环单链表表示的链队列中,可以不设队头指针,仅在队尾设置队尾指针;对4、顺序存储方式只能用于存储线性结构;错5、在线性表的顺序存储结构中,逻辑上相邻的两个元素但是在物理位置上不一定是相邻的;错6、链式存储的线性表可以随机存取;错四、程序分析填空题1、函数GetElem实现返回单链表的第i个元素,请在空格处将算法补充完整;int GetElemLinkList L,int i,Elemtype e{LinkList p;int j;p=L->next;j=1;whilep&&j<i{1 ;++j;}ifp||j>i return ERROR;e= 2 ;return OK;}答案:1p=p->next 2p->data2、函数实现单链表的插入算法,请在空格处将算法补充完整;int ListInsertLinkList L,int i,ElemType e{LNode p,s;int j;p=L;j=0;whilep=NULL&&j<i-1{ p=p->next;j++;}ifp==NULL||j>i-1 return ERROR;s=LNode mallocsizeofLNode;s->data=e;1 ;2 ;return OK;}/ListInsert/答案:1s->next=p->next 2p->next=s3、函数ListDelete_sq实现顺序表删除算法,请在空格处将算法补充完整;int ListDelete_sqSqlist L,int i{int k;ifi<1||i>L->length return ERROR;fork=i-1;k<L->length-1;k++L->slistk= 1 ;2 ;return OK;}答案:1L->slistk+1 2 --L->Length4、函数实现单链表的删除算法,请在空格处将算法补充完整;int ListDeleteLinkList L,int i,ElemType s{LNode p,q;int j;p=L;j=0;while 1 &&j<i-1{p=p->next;j++;}ifp->next==NULL||j>i-1 return ERROR;q=p->next;2 ;s=q->data;freeq;return OK;}/listDelete/答案:1p->next=NULL 2p->next=q->next5、写出算法的功能;int Lhead{node head;int n=0;node p;p=head;whilep=NULL{ p=p->next;n++;}returnn;}答案:求单链表head的长度五、综合题1、编写算法,实现带头结点单链表的逆置算法;答案:void inventLnode head{Lnode p,q,r;ifhead->next return ERROR;p=head->next; q=p->next; p->next =NULL;whileq{ r=q->next;q->next=p;head->next=q;p=q;q=r;}}试编写一个算法,将一个顺序表逆置,并使用最少的辅助存储空间实现;答案:typedef struct {ElemType elem;int length;}Sqlist;Invert_listSqlist L/将顺序表进行逆置/{ int i; ElemType t;fori=0;i<L->length-1/2;i++{t=L->elemi;L->elem i= L->elem L->length-i-1;L->elem L->length -i-1=t;}/for/}/invert_list/2、有两个循环链表,链头指针分别为L1和L2,要求写出算法将L2链表链到L1链表之后,且连接后仍保持循环链表形式;答案:void mergeLnode L1, Lnode L2{Lnode p,q ;whilep->next=L1p=p->next;whileq->next=L2q=q->next;q->next=L1; p->next =L2;}3、设一个带头结点的单向链表的头指针为head,设计算法,将链表的记录,按照data 域的值递增排序;答案:void assendingLnode head{Lnode p,q , r, s;p=head->next; q=p->next; p->next=NULL;whileq{r=q; q=q->next;ifr->data<=p->data{r->next=p; head->next=r; p=r; }else{whilep && r->data>p->data{s=p; p=p->next; }r->next=p; s->next=r;}p=head->next; }}4、编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度;答案:void linklist_cLnode head{Lnode p; p=head;ifp return ERROR;whilep->next=NULLp=p->next;p->next=head;}设单链表的长度数据结点数为N,则该算法的时间主要花费在查找链表最后一个结点上算法中的while循环,所以该算法的时间复杂度为ON;5、已知head为带头结点的单循环链表的头指针,链表中的数据元素依次为a1,a2,a3,a4,…,an,A为指向空的顺序表的指针;阅读以下程序段,并回答问题:1写出执行下列程序段后的顺序表A中的数据元素;2简要叙述该程序段的功能;ifhead->next=head{p=head->next;A->length=0;whilep->next=head{p=p->next;A->dataA->length ++=p->data;ifp->next=headp=p->next;}}答案:1 a2, a4, …,2将循环单链表中偶数结点位置的元素值写入顺序表A6、设顺序表va中的数据元数递增有序;试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性;答案:void Insert_sqSqlist va, ElemType x{int i, j, n;n=lengthva;ifx>=van-1van=x;else{i=0;whilex>vai i++;forj=n-1;j>=I;j--vaj+1=vaj;vai=x; }n++;}试编写一个算法,在一个递增有序排列的单链表中插入一个新结点x,并保持有序;struct Linknode{int data ;struct Linknode next ;};typedef struct Linknode Link;Link insertLink head{int i,e,j ;Link pointer,s;printf"\nplease input the elem of you want insert:";scanf"%d",&e;pointer= head;while pointer->next && e>=pointer->next->data/在链表中确定插入的位置/pointer=pointer->next;if pointer->next{s=Linkmallocsizeofstruct Linknode;s->data=e;s->next=NULL;pointer->next=s;}else {s=Linkmallocsizeofstruct Linknode;s->data=e; /为插入的结点建立链接关系/s->next=pointer->next;pointer->next=s;}/if/return head;}/LinkList_insert/7、假设线性表采用顺序存储结构,表中元素值为整型;阅读算法f2,设顺序表L=3,7,3,2,1,1,8,7,3,写出执行算法f2后的线性表L的数据元素,并描述该算法的功能;void f2SeqList L{int i,j,k;k=0;fori=0;i<L->length;i++{forj=0;j<k && L->datai=L->dataj;j++;ifj==k{ifk=iL->datak=L->datai;k++;}}L->length=k;}答案:3,7,2,1,8 删除顺序表中重复的元素8、已知线性表中的元素以值递增有序排列,并以单链表作存储结构;试写一算法,删除表中所有大于x且小于y的元素若表中存在这样的元素同时释放被删除结点空间; 答案:void Delete_listLnode head, ElemType x, ElemType y{Lnode p, q;ifhead return ERROR;p=head; q=p;whilep{ifp->data>x && p->data<y}i++;ifp==head{head=p->next; freep;p=head; q=p; }else{q->next=p->next; freep;p=q->next; }else{q=p; p=p->next; }}}9、在带头结点的循环链表L中,结点的数据元素为整型,且按值递增有序存放;给定两个整数a和b,且a<b,编写算法删除链表L中元素值大于a且小于b的所有结点;void Delete_listLnode head, ElemType a, ElemType b{Lnode p, q;ifhead->next return ERROR;p=head->next; q=p;whilep->next=head{ifp->data>x && p->data<y}i++;ifp==head{head=p->next; freep;p=head; q=p; }else{q->next=p->next; freep;p=q->next; }else{q=p; p=p->next; }}}试编写一个算法,将两个元素值递减排列的顺序表合并为一个非递增的顺序表;typedef struct {ElemType elem;int length;}Sqlist;Merge_listSqlist A, Sqlist B, Sqlist C{int j=0, k=0, i=0; C->length= A->length+ B->length;whilei<A->length&&j<B->lengthifA->elemi>B->elemj {C->elemk= A->elemi; i++; k++;} else { C->elemk= B->elemj; j++; k++;}whilei< A->length { C->elemk= A->elemi; i++; k++;}whilej< B->length { C->elemk= B->elemj; j++; k++;}}第三章栈和队列一、选择题1、一个栈的输入序列为:a,b,c,d,e,则栈的不可能输出的序列是 C ;A. a,b,c,d,eB. d,e,c,b,aC. d,c,e,a,bD. e,d,c,b,a2、判断一个循环队列Q最多n个元素为满的条件是 C ;A. Q->rear==Q->frontB. Q->rear==Q->front+1C. Q->front==Q->rear+1%nD. Q->front==Q->rear-1%n3、设计一个判别表达式中括号是否配对的算法,采用 D 数据结构最佳;A. 顺序表B. 链表C. 队列D. 栈4、带头结点的单链表head为空的判定条件是 B ;A. head==NULLB. head->next==NULLC. head->next=NULLD. head=NULL5、一个栈的输入序列为:1,2,3,4,则栈的不可能输出的序列是 D ;A. 1243B. 2134C. 1432D. 4312E. 32146、若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0,3;当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为B ;A. 1和5B. 2和4C. 4和2D. 5和17、队列的插入操作是在 A ;A. 队尾B. 队头C. 队列任意位置D. 队头元素后8、循环队列的队头和队尾指针分别为front和rear,则判断循环队列为空的条件是A ;A. front==rearB. front==0C. rear==0D. front=rear+19、一个顺序栈S,其栈顶指针为top,则将元素e入栈的操作是 A ;A. S->top=e;S->top++;B. S->top++;S->top=e;C. S->top=eD. S->top=e;10、表达式ab+c-d的后缀表达式是B ;A. abcd+-B. abc+d-C. abc+d-D. -+abcd11、将递归算法转换成对应的非递归算法时,通常需要使用 B 来保存中间结果;A. 队列B. 栈C. 链表D. 树12、栈的插入和删除操作在 B ;A. 栈底B. 栈顶C. 任意位置D. 指定位置13、五节车厢以编号1,2,3,4,5顺序进入铁路调度站栈,可以得到 C 的编组;A. 3,4,5,1,2B. 2,4,1,3,5C. 3,5,4,2,1D. 1,3,5,2,414、判定一个顺序栈S栈空间大小为n为空的条件是 A ;A. S->top==0B. S->top=0C. S->top==nD. S->top=n15、在一个链队列中,front和rear分别为头指针和尾指针,则插入一个结点s的操作为C ;A. front=front->nextB. s->next=rear;rear=sC. rear->next=s;rear=s;D. s->next=front;front=s;16、一个队列的入队序列是1,2,3,4,则队列的出队序列是 A ;A. 1,2,3,4B. 4,3,2,1C. 1,4,3,2D. 3,4,1,217、依次在初始为空的队列中插入元素a,b,c,d以后,紧接着做了两次删除操作,此时的队头元素是 C ;A. aB. bC. cD. d18、正常情况下,删除非空的顺序存储结构的堆栈的栈顶元素,栈顶指针top的变化是D ;A. top不变B. top=0C. top=top+1D. top=top-119、判断一个循环队列Q空间大小为M为空的条件是 A ;A. Q->front==Q->rearB. Q->rear-Q->front-1==MC. Q->front+1=Q->rearD. Q->rear+1=Q->front20、设计一个判别表达式中左右括号是否配对出现的算法,采用 C 数据结构最佳;A. 线性表的顺序存储结构B. 队列C. 栈D. 线性表的链式存储结构21、当用大小为N的数组存储顺序循环队列时,该队列的最大长度为 C ;A. NB. N+1C. N-1D. N-2解析:队列的头指针指向的是第一个元素的前一个结点,而不是指向第一个元素,一次队列的头指针要占用一个结点长度;22、队列的删除操作是在 A ;A. 队首B. 队尾C. 队前D. 队后23、若让元素1,2,3依次进栈,则出栈次序不可能是 C ;A. 3,2,1B. 2,1,3C. 3,1,2D. 1,3,224、循环队列用数组A0,m-1存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是 A ;A. rear-front+m%mB. rear-front+1C. rear-front-1D. rear-front25、在解决计算机主机和打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取走数据打印;该缓冲区应该是一个 B 结构;A. 堆栈B. 队列C. 数组D. 线性表解析:先进入缓冲区的文件先被打印,选择先进先出的结构,即队列;26、栈和队列都是 C ;A. 链式存储的线性结构B. 链式存储的非线性结构C. 限制存取点的线性结构D. 限制存取点的非线性结构解析:栈是只允许在栈顶进行插入和删除操作的线性表,队列是只允许在队头进行删除,在队尾进行删除操作的线性表27、在一个链队列中,假定front和rear分别为队头指针和队尾指针,删除一个结点的操作是 A ;A. front=front->nextB. rear= rear->nextC. rear->next=frontD. front->next=rear28、队和栈的主要区别是 D ;A. 逻辑结构不同B.存储结构不同C. 所包含的运算个数不同D. 限定插入和删除的位置不同二、填空题1、设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈的容量至少应该是 ;答案:32、一个循环队列Q的存储空间大小为M,其队头和队尾指针分别为front和rear,则循环队列中元素的个数为 ;答案:rear-front+M%M3、在具有n个元素的循环队列中,队满时具有个元素;答案:n-14、设循环队列的容量为70,现经过一系列的入队和出队操作后,front为20,rear为11,则队列中元素的个数为 ;答案:615、已知循环队列的存储空间大小为20,且当前队列的头指针和尾指针的值分别为8和3,且该队列的当前的长度为 ;答案:15三、判断题1、栈和队列都是受限的线性结构;对2、在单链表中,要访问某个结点,只要知道该结点的地址即可;因此,单链表是一种随机存取结构;错3、以链表作为栈的存储结构,出栈操作必须判别栈空的情况;对四、程序分析填空题1、已知栈的基本操作函数:int InitStackSqStack S; 连接 B. 求子串 C. 模式匹配D. 判断子串2、已知串S=’aaab’,则next数组值为A ;A. 0123B. 1123C. 1231D. 12113、串与普通的线性表相比较,它的特殊性体现在 C ;A. 顺序的存储结构B. 链式存储结构C. 数据元素是一个字符D. 数据元素任意4、设串长为n,模式串长为m,则KMP算法所需的附加空间为 A ;A. OmB. OnC. OmnD. Onlogm25、空串和空格串 B ;A. 相同B. 不相同C. 可能相同D. 无法确定6、与线性表相比,串的插入和删除操作的特点是 A ;A. 通常以串整体作为操作对象B. 需要更多的辅助空间C. 算法的时间复杂度较高D. 涉及移动的元素更多7、设SUBSTRS,i,k是求S中从第i个字符开始的连续k个字符组成的子串的操作,则对于S=’Beijing&Nanjing’,SUBSTRS,4,5= B ;A. ‘ijing’B. ‘jing&’C.‘ingNa’D. ‘ing&N’二、判断题对1、造成简单模式匹配算法BF算法执行效率低的原因是有回溯存在;对2、KMP算法的最大特点是指示主串的指针不需要回溯;对3、完全二叉树某结点有右子树,则必然有左子树;三、填空题1、求子串在主串中首次出现的位置的运算称为 ;答案:模式匹配2、设s=’I︺AM︺A︺TEACHER’,其长度是 ;答案:143、两个串相等的充分必要条件是两个串的长度相等且 ;答案:对应位置的字符也相同四、程序填空题1、函数kmp实现串的模式匹配,请在空格处将算法补充完整;int kmpsqstring s,sqstring t,int start,int next{int i=start-1,j=0;whilei<s->len&&j<t->lenifj==-1||s->datai==t->dataj{i++;j++;}else j= nextj ;ifj>=t->lenreturn i-t->len ;elsereturn-1;}2、函数实现串的模式匹配算法,请在空格处将算法补充完整;int index_bfsqstrings,sqstring t,int start{int i=start-1,j=0;whilei<s->len&&j<t->lenifs->datai==t->dataj{i++;j++;}else{i= i-j+1 ;j=0;}ifj>=t->lenreturn i-t->len+1 ;elsereturn -1;}}/listDelete/3、写出下面算法的功能;int functionSqString s1,SqString s2{int i;fori=0;i<s1->length&&i<s1->length;i++ifs->datai=s2->dataireturn s1->datai-s2->datai;return s1->length-s2->length;}答案:.串比较算法4、写出算法的功能;int funsqstring s,sqstring t,int start{int i=start-1,j=0;whilei<s->len&&j<t->lenifs->datai==t->dataj{i++;j++;}else{i=i-j+1;j=0;}ifj>=t->lenreturn i-t->len+1;elsereturn -1;}答案:串的模式匹配算法第五章数组和广义表一、选择题1、设广义表L=a,b,c,则L的长度和深度分别为C ;A. 1和1B. 1和3C. 1和2D. 2和32、广义表a,a的表尾是 B ;A. aB. aC.D. a3、稀疏矩阵的常见压缩存储方法有 C 两种;A. 二维数组和三维数组B. 三元组和散列表C. 三元组和十字链表D. 散列表和十字链表4、一个非空广义表的表头 D ;A. 不可能是子表B. 只能是子表C. 只能是原子D. 可以是子表或原子5、数组A0..5,0..6的每个元素占5个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A55的地址是 A ;A. 1175B. 1180C. 1205D. 12106、广义表G=a,bc,d,e,f,g 的长度是 A ;A. 3B. 4C. 7D. 87、采用稀疏矩阵的三元组表形式进行压缩存储,若要完成对三元组表进行转置,只要将行和列对换,这种说法 B ;A. 正确B. 错误C. 无法确定D. 以上均不对8、广义表a,b,c 的表尾是 B ;A. b,cB. b,cC. cD. c9、常对数组进行两种基本操作是 C ;A. 建立和删除B. 索引和修改C. 查找和修改D. 查找与索引10、对一些特殊矩阵采用压缩存储的目的主要是为了 D ;A. 表达变得简单B. 对矩阵元素的存取变得简单C. 去掉矩阵中的多余元素D. 减少不必要的存储空间的开销11、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为 B ;A. 13B. 33C. 18D. 4012、设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分按行序存放在一维数组B1,nn-1/2中,对下三角部分中任一元素ai,ji>=j,在一维数组B 的下标位置k 的值是A ;A. ii-1/2+j-1B. ii-1/2+jC. ii+1/2+j-1D. ii+1/2+j13、广义表A=a,a 的表头是 B ;A. aB. aC. bD. a14、稀疏矩阵一般的压缩存储方法有两种,即 C ;A. 二维数组和三维数组B. 三元组和散列C. 三元组和十字链表D. 散列和十字链表15、假设以三元组表表示稀疏矩阵,则与如图所示三元组表对应的4×5的稀疏矩阵是注:矩阵的行列下标均从1开始 B ;A. ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--00405000000000706080B. ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--00000004053000706080C. ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--00405000073000006080D. ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--00000304050000706080 16、以下有关广义表的表述中,正确的是 A ;A. 由0个或多个原子或子表构成的有限序列B. 至少有一个元素是子表C. 不能递归定义D. 不能为空表17、对广义表L=a,b,c,d,e,f 执行headtailheadtailL 操作的结果是 D ;A. 的B. eC. eD. e,f二、判断题错 1、广义表中原子个数即为广义表的长度;错 2、一个稀疏矩阵采用三元组表示,若把三元组中有关行下标与列下标的值互换,并把mu 和nu 的值进行互换,则完成了矩阵转置;对 3、稀疏矩阵压缩存储后,必会失去随机存取功能;错 4、广义表的长度是指广义表中括号嵌套的层数;对 5、广义表是一种多层次的数据结构,其元素可以是单原子也可以是子表;三、填空题1、已知二维数组Amn 采用行序为主方式存储,每个元素占k 个存储单元,并且第一个元素的存储地址是LOCA00,则Aij 的地址是LocA00+iN+jk ;2、广义表运算式HEADTAILa,b,c,x,y,z 的结果是:x,y,z ;3、二维数组,可以按照 按行序为主和按列序为主 两种不同的存储方式;4、稀疏矩阵的压缩存储方式有: 三元组表 和 十字链表法 ;四、综合题1、现有一个稀疏矩阵,请给出它的三元组表;答案:第六章 树一、选择题1、二叉树的深度为k,则二叉树最多有 C 个结点;A. 2kB. 2k-1C. 2k -1D. 2k-12、用顺序存储的方法,将完全二叉树中所有结点按层逐个从左到右的顺序存放在一维数组R1..N中,若结点Ri有右孩子,则其右孩子是 B ;A. R2i-1B. R2i+1C. R2iD. R2/i3、设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前面的条件是 B ;A. a在b的右方B. a在b的左方C. a是b的祖先D. a是b的子孙4、设一棵二叉树的中序遍历序列:badce,后序遍历序列:bdeca,则二叉树先序遍历序列为 D ;A. adbceB. decabC. debacD. abcde5、在一棵具有5层的满二叉树中结点总数为 A ;A. 31B. 32C. 33D. 166、由二叉树的前序和后序遍历序列 B 惟一确定这棵二叉树;A. 能B. 不能解析:二叉树的前序和中序遍历序列可以唯一确定一颗二叉树;二叉树的中序和后序遍历序列可以唯一确定一颗二叉树;而二叉树的前序和后序遍历序列不能惟一确定一棵二叉树7、某二叉树的中序序列为ABCDEFG,后序序列为BDCAFGE,则其左子树中结点数目为C ;A. 3B. 2C. 4D. 58、若以{4,5,6,7,8}作为权值构造哈夫曼树,则该树的带权路径长度为 C ;A. 67B. 68C. 69D. 709、将一棵有100个结点的完全二叉树从根这一层开始,每一层上从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为 A ;A. 98B. 99C. 50D. 4810、表达式ab+c-d的后缀表达式是 B ;A. abcd+-B. abc+d-C. abc+d-D. -+abcd11、对某二叉树进行先序遍历的结果为ABDEFC,中序遍历的结果为DBFEAC,则后序遍历的结果是 B ;A. DBFEACB. DFEBCAC. BDFECAD. BDEFAC12、树最适合用来表示 C ;A. 有序数据元素B. 无序数据元素C. 元素之间具有分支层次关系的数据D. 元素之间无联系的数据13、表达式AB+C/D-E+F的后缀表达式是C ;A. AB+C/D-E+FB. ABC+D/E-F+C. ABC+DE-F+/D. ABCDED+/-+14、在线索二叉树中,t所指结点没有左子树的充要条件是 B ;A. t->left==NULLB. t->ltag==1C. t->ltag==1&&t->left==NULLD. 以上都不对15、任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序 A ;A. 不发生改变B. 发生改变C. 不能确定D. 以上都不对16、假定在一棵二叉树中,度为2的结点数为15,度为1的结点数为30,则叶子结点数为B个;A. 15B. 16C. 17D. 4717、在下列情况中,可称为二叉树的是 C ;。
数据结构习题集
7
对于一个具有 n 个结点的单链表,在已知的结点*p 后插入一个新结点的时间复杂度 为 ,在给定值为 x 的结点后插入一个新结点的时间复杂度为 ___。
8. 在顺序表中访问任意一结点的时间复杂度均为 的数据结构。
9、线性链表不具有的特点是( ) 。 A.随机访问 C.插入与删除时不必移动元素
,因此顺序表也称为
17.双循环链表中,任意一结点的后继指针均指向其逻辑后继。(对还是错)
18、线性表L在
情况下适用于使用链式结构实现。 B、需不断对L进行删除插入 D、L中结点结构复杂 )
A、需经常修改L中的结点值 C、L中含有大量的结点
19 若某线性表中最常用的操作是取第 i 个元素和找第 i 个元素的前趋元素, 则采用 ( 存储方式最节省时间。 ①单链表 ②双链表 ③单向循环 ④顺序表
3. 在双向链表指针 p 的结点前插入一个指针 q 的结点操作是( A. p->Prior=q;q->Next=p;p->Prior->Next=q;q->Prior=p->Prior; B. p->Prior=q;p->Prior->Next=q;q->Next=p;q->Prior=p->Prior; C. q->Next=p;q->Prior=p->Prior;p->Prior->Next=q;p->Prior=q; D. q->Prior=p->Prior;q->Next=p;p->Prior=q;p->Prior->Next=q;
第 4 章 数组 知识点:二维数组的存储、特殊矩阵
1. 假设有二维数组 A6×8,每个元素用相邻的 6 个字节存储,存储器按字节编址。 已知 A 的起始存储位置 (基地址) 为 1000, 则数组 A 的体积 (存储量) 为 ; 末尾元素 A57 的第一个字节地址为 ;若按行存储时,元素 A14 的第一 个字节地址为 ;若按列存储时,元素 A47 的第一个字节地址 为 。
数据结构习题集和答案
第1章绪论1、填空题1.常见的数据结构有集合,_线性__结构,__树形___结构,__图形__结构等四种。
2.常见的存储结构有__顺序存储_______结构,__链式存储____结构等两种。
3.数据的基本单位是_数据元素___,它在计算机中是作为一个整体来处理的。
4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,__线性结构____和__非线性结构___。
2、选择题1. 算法的计算量的大小称为计算的(B)。
A.效率 B. 复杂性 C. 现实性D. 难度2. 算法的时间复杂度取决于(C)A.问题的规模 B. 待处理数据的初态 C. A和B D. 以上都不对3.计算机算法指的是(1)(c),它必须具备(2)(B)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性4. 下面关于算法说法错误的是(D)A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的3、应用题1、给出以下算法的时间复杂度.void fun(int n){int i=1,k=100;while(i<n){k=k+1;i=i+2;}}时间复杂度为____O(n)_____。
2、给出以下算法的时间复杂度.void fun2(int n){int i=1,k=100;while(i<n){i=i*10;k=k+1;}}时间复杂度为____O(log n)___________。
第2章线性表1、填空题1. 线性表按照存储结构不同主要有两种实现方式,一种是__顺序_表,另一种是___链___表。
2.顺序表采用__随机___访问机制对数据元素进行访问。
3.若在单链表结点p的后面插入一个新的结点s,则其操作序列为:①____s->next=p->next_____________;②____p->next=s___________________;4.在单向链表中,若要删除某个结点p,一般要找到__p的前趋__结点,才能实现该操作。
数据结构习题集(2022)
数据结构习题集(2022)第一章绪论1.下面是几种数据的逻辑结构S=(D,R),分别画出对应的数据逻辑结构,并指出它们分别属于何种结构。
D={a,b,c,d,e,f}R={r}(a)r={,,,,}(b)r={,,,,}(c)r={,,,,}2.分析下列程序段的时间复杂度(a)for(i=0;ifor(j=0;jfor(i=0;ifor(j=0;jWhile(i3.在数据结构中,与所使用的计算机无关的是A.存储结构B.物理结构C.物理和存储结构D.逻辑结构4.非线性结构中每个结点A.无直接前驱结点B.只有一个直接前驱和直接后继结点C.无直接后继结点D.可能有多个直接前驱和多个直接后继结点5.可以把数据的逻辑结构划分成A.内部结构和外部结构B.动态结构和静态结构C.紧凑结构和非紧凑结构D.线性结构和非线性结构6.算法的时间复杂度取决于()。
A.问题的规模B.待处理数据的初态C.A和B7.计算机算法指的是(),它必须具备()这三个特性。
(1)A.计算方法B.排序方法C.解决问题的步骤序列D.调度方法(2)A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性D.易读性、稳定性、安全性第二章线性表一、单项选择题1.下面关于线性表叙述中,错误的是_(1)_。
(1):A.顺序表必须占用一片地址连续的存储单元B.链表不必占用一片地址连续的存储单元C.顺序表可以随机存取任一元素D.链表可以随机存取任一元素2.在表长为n的单链表中,算法时间复杂度为O(n)的操作是(2)。
(2):A.查找单链表中第i个结点B.在p结点之后插入一个结点C.删除表中第一个结点D.删除p结点的直接后继结点3.单链表的存储密度(3)(3):A.大于1B.等于1C.小于1D.不能确定4.在表长为n的顺序表中,算法的时间复杂度为O(1)的操作是(4)(4):A.在第n个结点之后插入一个结点B.在第i个结点前插入一个新结点C.删除第i个结点D.求表长5.在下列链表中不能从当前结点出发访问到其余各结点的是(5)。
数据结构习题集(总)
数据结构习题集第一章绪论1.1数据结构是一门研究非数值计算的程序设计问题中计算机的___①__以及它们之间的__②_ 和运算等的学科。
①A.数据元素 B.计算方法 C.逻辑存储 D.数据映像②A.结构 B.关系 C.运算 D.算法1.2 算法分析的目的是___①__ ,算法分析的两个主要方面是__②___ 。
① A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求该进D.分析算法的易懂性和文档性② A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性1.3 计算机算法指的是__①__ ,它必须具备输入、输出和__②_ 等5个重要特性。
① A.计算方法 B.排序方法C.解决问题的有限运算序列D.调度方法② A.可读性、可移植性和可扩展性 B. 可读性、可移植性和有穷性C.确定性、有穷性和可行性D.易读性、稳定性和安全性1.4数据结构是研究数据的__________和__________,并对这种结构定义相适应的运算,设计出相应的算法,分析算法的效率。
算法的效率包括时间和空间两个方面,分别称为__________和__________。
1.5数据逻辑结构是指__________;包括、和三种类型,其中树形结构和图状结构合称为____。
1.6 线性结构中元素之间存在____ 关系,树形结构中元素之间存在____ 关系,图状结构中元素之间存在____ 关系。
1.7 在计算机中的表示称为数据的物理(或存储)结构,数据的物理结构可以采用________和__________两种存储方法。
1.8顺序存储方法是把逻辑上存储在物理位置;链式存储方法中元素间的关系是由__________________的。
1.9 算法的时间复杂度与有关。
1.10 数据元素是数据处理的;数据项是数据处理的_________。
第二章线性表2.1 链表不具备的特点是 ____ 。
数据结构总习题答案
第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--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构习题集第一章绪论1.1数据结构是一门研究非数值计算的程序设计问题中计算机的___①__以及它们之间的__②_ 和运算等的学科。
①A.数据元素 B.计算方法 C.逻辑存储 D.数据映像②A.结构 B.关系 C.运算 D.算法1.2 算法分析的目的是___①__ ,算法分析的两个主要方面是__②___ 。
① A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求该进D.分析算法的易懂性和文档性② A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性1.3 计算机算法指的是__①__ ,它必须具备输入、输出和__②_ 等5个重要特性。
① A.计算方法 B.排序方法C.解决问题的有限运算序列D.调度方法② A.可读性、可移植性和可扩展性 B. 可读性、可移植性和有穷性C.确定性、有穷性和可行性D.易读性、稳定性和安全性1.4数据结构是研究数据的__________和__________,并对这种结构定义相适应的运算,设计出相应的算法,分析算法的效率。
算法的效率包括时间和空间两个方面,分别称为__________和__________。
1.5数据逻辑结构是指__________;包括、和三种类型,其中树形结构和图状结构合称为____。
1.6 线性结构中元素之间存在____ 关系,树形结构中元素之间存在____ 关系,图状结构中元素之间存在____ 关系。
1.7 在计算机中的表示称为数据的物理(或存储)结构,数据的物理结构可以采用________和__________两种存储方法。
1.8顺序存储方法是把逻辑上存储在物理位置;链式存储方法中元素间的关系是由__________________的。
1.9 算法的时间复杂度与有关。
1.10 数据元素是数据处理的;数据项是数据处理的_________。
第二章线性表2.1 链表不具备的特点是 ____ 。
A.可随机访问任一结点B.插入删除不需移动元素C.不必事先估计存储空间D.所需空间与其长度成正比2.2 不带头结点的单链表head 为空的判定条件是____。
A. head==nullB. head->next==nullC. head->next==headD. head !=null2.3带头结点的单链表head 为空的判定条件是____。
A. head==nullB. head->next==nullC. head->next==headD. head!=null2.4 非空的循环单链表head 的尾节结点(由p所指向)满足____。
A. p->next==nullB. p==nullC. p->next==headD. p==head2.5 在一个具有n 个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是____。
A. O(1)B. O(n)C. O(n2)D. O(nlog2n)2.6 在单链表中设置头结点的作用是____。
2.7 在一个单链表中的p 所指结点之后插入一个S 所指结点时,可执行如下操作:(1) s->next=____ (2) p->next=s;(3) t=p->data; (4)p->data=____ (5)s->data=____2.8 在一个单链表中删除p所指结点时,应执行以下操作:(1)q=p->next; (2) p->data=p->next->data;(3)p->next=____; (4) free(q);2.9 在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____ 的操作。
2.10线性表的逻辑顺序与物理顺序总是的。
2.11 已知具有n个元素的一维数组采用顺序存储结构,每个元素占k个存储单元,第一个元素的地址为LOC(a1),那么,LOC(ai)=___________________。
2.12 线性表中数据元素之间具有__________,除第一个和最后一个元素外,其他数据元素有且只有__________后继和前趋。
2.13 线性链表中各个结点之间的地址连续。
2.14 若频繁地对线性表进行插入和删除操作,该线性表采用存储结构比较合适。
2.15 若线性表采用顺序存储结构,每个数据元素占用3个存储单元,第11个数据元素的存储地址为130,则第1个数据元素的存储地址是。
2.16 符号p->next 出现在表达式中表示p所指的那个结点的。
2.17 要将指针p移到它所指的结点的下一个结点应执行语句。
2.18 在非空线性链表中由p所指的结点后面插入一个由s所指的结点的过程是依次执行语句:____________________;___________________。
2.19 在以head为头结点的循环单链表中,尾指针p应满足p->next= 。
2.20.以head为头结点循环双链表为空时,应满足head->llink= ,head->rlink= 。
2.21若线性表采用顺序存储结构,线性表的最大长度为1000,每个数据元素占3个存储单元,则要分配给该线性表__________存储单元,若第一个数据元素的存储地址是2000,则第11个元素的存储地址是__________。
2.22 在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是。
A.p=p->next;B.p->next=p->next->next;C.p->next=p;D.p=p->next->next;2.23 在单链表中,已知q指的结点是p指的结点的直接前驱结点,若在q和p指的结点之间插入一个由s指的结点,则需执行________。
A. s->next=p->next;p->next=sB. q->next=s;s->next=pC. p->next=s->next;s->next=pD.p->next=s;s->next=q2.24带头结点head的循环单链表的尾结点(由p所指向)满足__________。
A. p->next==NULLB. p==NULLC. p->next=headD. p==head2.25 若长度为n的线性表采用顺序存储结构,删除它的第i个数据元素,需要先依次向前移动_______个数据元素。
A.n-iB.n+iC.n-i-1D.n-i+12. 28下面的程序段可以将第i个元素以后的所有元素前移,程序的空白处应填入的语句为。
x=v[ i ];for (j=i+1 ; j<=n ; j++);A.a[j]=a[j+1] B.a[j-1]=a[j] C.a[j]=a[j-1] D.a[j+1]=a[j]2.31 用链表表示线性表的优点是()A.便于随机存储 B.便于进行插入和删除操作C. 占用的存储空间较顺序表少D.元素的物理顺序与逻辑顺序相同2.32 下面关于线性表的叙述中,错误的是()A. 线性表采用顺序存储必须占用一片连续的存储单元B. 线性表采用顺序存储便于进行插入和删除操作C. 线性表采用链式存储不必占用一片连续的存储单元D. 线性表采用链式存储便于进行插入和删除操作2.33 线性表是具有n个()的有限序列A. 数据项B. 数据元素C. 表元素D. 字符2.34 若长度为n的线性表采用链式存储结构,访问其第i个元素的算法时间复杂度为()A. O(1)B.O(n)C. O(n2)D.O(log2n)2.35 在长度为n的顺序表第i(1≤i≤n)个元素,则需要向前移动元素的次数为()A. iB. n-iC. n-i+1D.n-i-12.36 在长度为n的顺序表中第i(1≤i≤n)个位置上插入一个元素时,为留出插入位置所需要移动元素的次数为()A. n-iB. iC. n-i-1D. n-i-1、2.37 以下对单链表的叙述错误的是()A. 单链表中的每一个结点都由存放结点值的数据域和存放直接后继结点地址信息的指针域两部分组成B.从单链表的第i 个结点出发,可以访问到链表中的任何一个结点C.在单链表结构中加入头结点可以简化结点的插入和删除操作D.单链表尾结点的指针域应置为空指针2.38 以下记叙中正确的是()A. 线性表的链式存储结构优先于顺序存储结构B. 线性表的存储结构不影响其各种运算的实现C. 选择线性表的存储结构就是要保证存储其各个元素的值D.顺序存储属于静态结构,链式存储属于动态结构2.39 若已建立以下链表结构,指针p和s分别指向如图所示的结点,以下语句中,能够将s所指结点插入到链表中p 所指结点之后的是()A. p->next=s; s->next=pB. (*s).next=(*p).next; (*p).next=s;C. p=p->next; s->next=p; p->next=sD. p->next=s; s->next=p->next2.40 若已建立以下链表结构,指针p和s分别指向如图所示的结点,以下语句组中,能够将s所指结点从链表中删除并释放该结点的是()A. free(s);p->next=s->next;B. s=s->next; p->next=s; free(s);C. p->next=s->next; free(s);D. s=s->next; p>next=s; p=p->next; free(p);2.41 设有结点定义:Struct node{Int data;Struct node *node;}:且已建立如图所示的带有头结点的单向链表:函数sum的功能是:计算链表中各结点数据域之和,作为函数值返回。
请填空。
i nt sum(struct node*head){int s=0struct node*p;p=head->next;do{s=s+___ ;p=p->next;}while(p!= ___);return s;2.42 以下算法用以统计链表中元素的个数,其中first指向链表中的第一个结点,count用来统计结点的个数。
请填空struct link{char data;struct link*next;};structlink *p,*first;int count=0;p=first;while(___){___P=___;}第三章栈与队列一、选择题3.1 栈的特点是____ ,队列的特点是____ 。