数据结构习题集(积分)
数据结构习题集及答案
2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。
4.在非空双向循环链表中,在结点q的前面插入结点p的过程如下:
p->prior=q->prior;
q->prior->next=p;
p->next=q;
______________________;
5.已知L是无表头结点的单链表,是从下列提供的答案中选择合适的语句序列,分别实现:
(1)表尾插入s结点的语句序列是_______________________________
while(p!=NULL)
{p=p->link;++i;
sum=sum+p->data;}
ave=sum/i;
return (ave);}
2、
#include "stdio.h"
#include "malloc.h"
typedef struct node
{
int data; /* 假设数据域为整型 */
9.用循环链表作线性表(a0,a1,...,an-1)和(b0,b1,...,bm-1)的存储结构,头指针分别为ah和bh,设计C函数,把两个线性表合并成形如(a0,b0,a1,b1,…)的线性表,要求不开辟新的动态空间,利用原来循环链表的结点完成合并操作,结构仍为循环链表,头指针为head,并分析算法的时间复杂度。
数据结构习题集和答案
第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的前趋__结点,才能实现该操作。
数据结构习题集(包含全部答案)
数据结构习题集(自编)之阳早格格创做第一章绪论一、采用题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.串的链式保存结构是将保存天区别成一系列大小相共的结面,每个结面有二个乡:____________域战________域.其中___________域用于存搁数据,。
数据结构习题集及参考答案(重要)
第一章绪论一、填空题1.数据是描述客观事物的数、字符以及所有能输入到计算机且能够被计算机程序加工处理的符号集合。
_________是数据的基本单位;___________是数据的最小单位。
通常被计算机加工处理的数据不是孤立无关的,而是彼此之间存在着某种联系,将这种数据间的联系称为________。
2.数据结构进行形式化定义时,可以从逻辑上认为数据结构DS是_________的集合D和D上_________的集合R所构成的二元组:DS=(D,R)。
3.已知某数据结构的二元组形式表示为:A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>}。
则此数据结构属于_____________结构。
4.一个算法的时间复杂度通常用问题规模大小的函数来表示,当一个算法的时间复杂度与问题规模n大小无关时,则表示为__________;成正比关系时,则表示为___________;成对数关系时,则表示为___________;成平方关系时,则表示为__________。
5.数据结构的逻辑结构包括_____________、树型结构和图型结构三种类型,其中树型结构和图型结构合称为_____________;数据结构的存储结构主要包括____________和____________两种类型。
6.线性结构的特点是:第一个结点_______前驱结点,其余结点有且仅有_______个前驱结点;最后一个结点_______后继结点,其余每个结点有且仅有_______个后继结点。
7.树型结构的特点是:根结点没有________结点,其余每个结点有且仅有________个前驱结点;叶子结点_________后继结点,其余结点可以有_________个后继结点。
数据结构题集及答案
判断题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 )。
【精品】数据结构习题集(包含全部答案)
数据结构习题集(自编)第一章绪论一、选择题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.算法最终必须由计算机程序实现B.为解决某问题的算法与为该问题编写的程序含义是相同的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. 哈希表 C.有序表 D. 单链表二、填空题1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
(数据、数据)2、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。
数据结构综合习题集(含答案)
数据结构习题集一、选择题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==NULL6.若构造一棵具有n个结点的二叉排序树,最坏的情况下其深度不会超过(B)A.n/2B.nC.(n+1)/2D.n+17.将两个各有n个元素的有序表合并成一个有序表,其最少的比较次数为(A)A.nB.2n-1C.2nD.n28.设顺序表有19个元素,第一个元素的地址为200,且每个元素占3个字节,则第14个元素的存储地址为(B )A.236B.239C.242D.2459.一个栈的入栈序列是a,b,c,d,e,则栈的输出序列不可能是(A )A.dceabB.decbaC.edcbaD.abcde10.元素大小为1个单元,容量为n个单元的非空顺序栈中,以地址高端为栈底,以top作为栈顶指针,则出栈处理后,top的值应修改为(D )A.top=topB.top=n-1C.top=top-1D.top=top+111.设有一个10阶的对称矩阵A,采用压缩存储方式以行序为主序存储,a00为第一个元素,其存储地址为0,每个元素占有1个存储地址空间,则a45的地址为(B)A.13B.35C.17D.3612.栈和队列( C )A.共同之处在于二者都是先进先出的特殊的线性表B.共同之处在于二者都是先进后出的特殊的线性表C.共同之处在于二者都只允许在顶端执行删除操作D.没有共同之处13.含有n个结点的二叉树用二叉链表表示时,空指针域个数为(C )A.n-1B.nC.n+1D.n+214.对一棵有100个结点的完全二叉树按层序编号,则编号为49的结点,它的左孩子的编号为(B)A.99B.98C.97D.5015.在一个图中,所有顶点的度数之和与图的边数的比是( C)A.1∶2B.1∶1C.2∶1D.4∶116.在一个具有n个顶点的无向图中,要连通全部顶点至少需要的边数为(A )A.n-1B.nC.n+1D.n/217.在一个具有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(n2)B.O(nlog2n)C.O(n)D.O(log2n)21.采用排序算法对n个元素进行排序,其排序趟数肯定为n-1趟的排序方法是(C)A.插入和快速B.冒泡和快速C.选择和插入D.选择和冒泡22. 闭散列表中由于散列到同一个地址而引起的“堆积”现象,是( B)A.由同义词之间发生冲突引起的B.由非同义词之间发生冲突引起的C.由同义词之间或非同义词之间发生冲突引起的D.由散列表“溢出”引起的23.在对查找表的查找过程中,若被查找的数据元素不存在,则把该数据元素插入到集合中。
数据结构习题集(总)
数据结构习题集第一章绪论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、填空题(1)常见的数据结构有集合、_ 线性 __结构,__ 树 _ __结构,__图 __结构等三种。
(2)常见的存储结构有__ 顺序存储 ___结构,__ 链式存储 ___结构等两种。
(3)数据的基本单位是_数据元素__,它在计算机中是作为一个整体来处理的。
(4)数据结构中的结构是指数据间的逻辑关系,常见的逻辑结构可分为两大类:__ 线性结构 ____和__ 非线性结构 ___。
2、选择题(1)数据结构是一门研究非数值计算的程序设计中计算机的 A 以及它们之间的 C 和运算等的学科。
(A)数据元素(B)计算方法(C)关系(D)数据映像(2)在数据结构中,与所使用的计算机无关的是数据的 A 结构。
(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(log10n) ______。
第2章线性表1、填空题(1)线性表按照存储结构不同主要有两种实现方式,一种是__顺序_表,另一种是___ 链 ___表。
(2)顺序表采用__随机___访问机制对数据元素进行访问。
(3)若在单链表结点p的后面插入一个新的结点s,则其操作序列为:①____s->next=p->next _____________;②___ p->next=s ___________________;(4)在单向链表中,若要删除某个结点p,一般要找到__p的直接前驱__结点,才能实现该操作。
严蔚敏《数据结构(c语言版)习题集》全答案
义); {
设计题目的解决方案,主要作者为计算机版版主一具.以下网 假设结果已经储存在result[ ]数组中
友:siice,龙抬头,iamkent,zames,birdthinking等为答案的修订和完善 {
----------------------- Page 1-----------------------
说明: 1.本文是对严蔚敏《数据结构(c语言版)习题集》一书中所有算法 voidsummary(resulttype result[])//求各校的男女总分和团体总分,
if(result[i].gender==0) score.malescore+=result[i].score;
else score.femalescore+=result[i].score;
要的讨论.目前尚未解决的题目有:5.20, 10.40; case 'A':
4. 请读者在自己已经解决了某个题目或进行了充分的思考之后,再参考 score[ 0 ].totalscore+=result[i].score;
voidprint_descending(int x,int y,int z)//按从大到小顺序输出三 }
个数 i++;
if(x<y) x<->y; //<->为表示交换的双目运算符,以下同 {
if(y<z) y<->z; printf("School %d:\n",i);
3. 本解答原则上只给出源代码以及必要的注释,对于一些难度较高或思 switch(result[i].schoolname)
数据结构课程习题集第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. 塔的问题题目描述:有三个塔,分别是A、B和C,A塔上有n个盘子,按照从小到大的顺序叠放。
现在要将这些盘子从A塔移动到C塔,并且每次只能移动一个盘子,并且在移动过程中保持大盘子在下,小盘子在上的顺序。
求移动的步骤。
解析:这道题可以使用递归来解决。
将问题分解为两个子问题:将n-1个盘子从A塔移动到B塔,然后将最后一个盘子从A塔移动到C 塔,最后再将n-1个盘子从B塔移动到C塔。
步骤如下:1)如果n等于1,直接将盘子从A塔移动到C塔;2)否则,执行以下步骤:a) 将n-1个盘子从A塔移动到B塔,使用C塔作为中转塔;b) 将最后一个盘子从A塔移动到C塔;c) 将n-1个盘子从B塔移动到C塔,使用A塔作为中转塔。
2. 链表问题题目描述:给定一个链表,判断链表是否存在环。
解析:这道题可以使用快慢指针的思想来解决。
定义两个指针fast和slow,初始时都指向链表的头节点。
fast指针每次向后移动两个节点,slow指针每次向后移动一个节点。
如果链表中存在环,则fast指针一定会在某个时刻追上slow指针。
步骤如下:1)定义两个指针fast和slow,初始时都指向链表的头节点;2)使用一个while循环,判断条件是fast指针不为空且其下一个节点也不为空;3)在循环中,fast指针每次向后移动两个节点,slow指针每次向后移动一个节点;4)如果fast指针和slow指针相遇,则链表存在环,返回true;5)如果fast指针和slow指针永远不相遇,则链表不存在环,返回false。
3. 栈的应用题目描述:给定一个只包含'('和')'的字符串,判断该字符串是否是有效的括号序列。
解析:这道题可以使用栈来解决。
遍历字符串的每一个字符,如果是左括号,将其压入栈中;如果是右括号,判断栈顶的字符是否与该右括号匹配,若匹配则出栈,若不匹配则该字符串不是有效的括号序列。
数据结构习题集
数据结构习题集一、判断题:1.图可以没有边,但不能没有顶点。
( )2.在无向图中,(v1,v2)和(v2,v1)是两条不同的边。
(X)3.邻接表只能用于有向图的存储。
(X)4.一个图的邻接矩阵表示是唯一的。
( )5.用邻接矩阵法存储一个图时,所占用的存储空间大小与图中顶点个数无关,而只与图的边数有关。
(X)6.有向图不能进行广度优先遍历。
(X)7.若一个无向图以顶点v1为起点进行深度优先遍历,所得的遍历序列唯一,则可以唯一确定该图。
( )8.存储无向图的邻接矩阵是对称的,因此只要存储邻接矩阵上三角(或下三角)部分就可以了。
( )9.用邻接表法存储图时,占用的存储空间大小只与图中的边数有关,而与结点的个数无关。
(X)10.若从一个无向图中任一顶点出发,进行一次深度优先遍历,就可以访问图中所有的顶点,则该图一定是连通的。
( )11.二分查找法要求待查表的关键字值必须有序。
()12.对有序表而言,采用二分查找部总比采用顺序查找法速度快。
()13.在二叉排序树中,根结点的值都小于孩子结点的值。
()14.散列存储法的基本思想是由关键字的值决定数据的存储地址。
()15.哈希表是一种将关键字转换为存储地址的存储方法。
()16.选择好的哈希函数就可以避免冲突的发生。
()17.在有序的顺序表和有序的链表上,均可以采用二分查找来提高查找的速度。
()18.采用分块查找,既能实现线性表所希望的查找速度,又能适应动态变化的需要。
()19.哈希查找的效率主要取决于哈希表构造时选取的哈希函数和处理冲突的方法。
()20.在二叉排序树上删除一个结点时,不必移动其他结点,只要将该结点的父结点的相应指针域置空即可。
()二、填空题:1.图常用的存储方式有邻接矩阵和等。
2.图的遍历有和广度优先搜索等方法。
3.有n条边的无向图邻接矩阵中,1的个数是。
4.有向图的边也称为。
5.图的邻接矩阵表示法是表示之间相信关系的矩阵。
6.有向图G用邻接矩阵存储,其第i行的所有元素之和等于顶点i的。
数据结构习题集(积分)
6.若将n阶下三角矩阵A,按列优先顺序压缩存放在一维数组F[n(n+1)/2]中,第一个非零元素a11,存于F[0]中,则应存放到F[K]中的非零元素aij(1≤j≤n,1≤j≤i)的下标i,i与K的对应关系是(6)。
(6):A.(2n-j+1)j/2+I-j B.(2n-j+2)(j-1)/2+i-j
(3):A.Loc(a[0][0]+[(i-1)*n+j-1]*d
B.Loc(a[0][0])+[i*n+j]*d
C.Loc(a[0][0]+[(j-1)*m+i]*d
D.Loc(a[0][0])+[j*m+i]*d
4.已知二维数组A[6][10],每个数组元素占4个存储单元,若按行优先顺序存放数组元素a[3][5]的存储地址是1000,则a[0][0]的存储地址是(4)。
第二章线性表
一、单项选择题
1.下面关于线性表叙述中,错误的 是_(1)_。
(1):A.顺序表必须占用一片地址连续的存储单元
B.链表不必占用一片地址连续的存储单元
C.顺序表可以随机存取任一元素
D.链表可以随机存取任一元素
2.在表长为n的单链表中,算法时间复杂度为O(n)的操作是(2)。
(2):A.查找单链表中第i个结点B.在p结点之后插入一个结点
(2)在p结点前插入s结点的语句序列是:
s->prior=p->prior;s->next=p;(13);(14)
(3)删除p结点的直接后继结点的语句序列是:
q=p->next;p->next=q->next;(15);free(q);
经典数据结构习题集含答案
线性表1.下列有关线性表的叙述中,正确的是(A)。
A)线性表中元素之间的关系是线性关系B)线性表中至少有一个元素C)线性表中的任一元素有且仅有一个直接前趋D)线性表中的任一元素有且仅有一个直接后继2.下述哪一条是顺序存储结构的优点?(A)A)存储密度大B)插入方便C)删除方便D)可方便地用于各种逻辑结构的存储表示3.在一个长度为n的顺序表中,在第i个元素(1<=i<=n)之前插入一个新元素时需向后移动(D)个元素。
A)1 B)n-i C)n-i-1 D)n-i+14.如果某线性表中最常用的操作是取第i个元素和找第i个元素的前驱,那么采用(A)存储方式最节省时间。
A)顺序表B)单链表C)双链表D)循环链表5.对顺序存储的线性表,设其长度为n,且在任何位置上插入或删除操作都是等概率的。
则插入一个元素时平均要移动表中的(A)个元素。
A)n/2 B)(n+1)/2 C)(n-1)/2 D)n6.下述哪一条是顺序存储结构的缺点?(C)A)存储密度太大B)随机存取C)一般要估计最大的需要空间D)只能应用于少数几种逻辑结构的存储表示7.在单链表中,增加头结点的目的是(C)。
A)使单链表至少有一个结点B)标志表中首结点的位置C)方便运算的实现D)说明单链表是线性表的链式存储表示8.单链表不具有的特点是(A)。
A)可随机访问任一元素B)插入和删除不需要移动元素C)不必事先估计存储空间D)所需空间和线性表长度成正比9.循环链表的主要优点是(D)。
A)不再需要头指针了B)已知某个结点的位置后,能够容易找到他的直接前趋C)在进行插入、删除运算时,能更好的保证链表不断开D)从表中的任意结点出发都能扫描到整个链表10.链表对于数据元素的插入与删除是(B)。
A)不需移动结点,不需改变结点指针B)不需移动结点,只需改变结点指针C)只需移动结点,不需改变结点指针D)既需移动结点,又需改变结点指针11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若要在q 和p 所指结点之间插入s所指的结点,则执行(B)。
数据结构试题集含答案
程序复杂性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 ;。
数据结构题集及答案e
判断题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 〕。
数据结构习题集含参考答案
数据结构习题集含答案目录目录 (1)选择题 (2)第一章绪论 (2)第二章线性表 (4)第三章栈和队列 (6)第四章串 (9)第五章数组和广义表 (9)第六章树和二叉树 (10)第七章图 (13)第八章查找 (15)第九章排序 (17)简答题 (21)第一章绪论 (21)第二章线性表 (22)第三章栈和队列 (23)第四章串 (25)第六章树和二叉树 (25)第七章图 (29)第八章查找 (32)第九章排序 (33)编程题 (35)第一章绪论 (35)第二章线性表 (35)第三章栈和队列 (37)第四章串 (37)第五章数组和广义表 (37)第六章树和二叉树 (37)第七章图 (37)第八章查找 (37)第九章排序 (39)选择题第一章绪论1. 数据结构这门学科是针对什么问题而产生的?(A )A、针对非数值计算的程序设计问题B、针对数值计算的程序设计问题C、数值计算与非数值计算的问题都针对D、两者都不针对2. 数据结构这门学科的研究内容下面选项最准确的是(D )A、研究数据对象和数据之间的关系B、研究数据对象C、研究数据对象和数据的操作D、研究数据对象、数据之间的关系和操作3. 某班级的学生成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那么下面关于数据对象、数据元素、数据项描述正确的是(C )A、某班级的学生成绩表是数据元素,90分是数据项B、某班级的学生成绩表是数据对象,90分是数据元素C、某班级的学生成绩表是数据对象,90分是数据项D、某班级的学生成绩表是数据元素,90分是数据元素4. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同,称之为(C )。
A、存储结构B、逻辑结构C、链式存储结构D、顺序存储结构5. 算法分析的目的是(C )A、找出数据的合理性B、研究算法中的输入和输出关系C、分析算法效率以求改进D、分析算法的易懂性和文档型性6. 算法分析的主要方法(A )。
A、空间复杂度和时间复杂度B、正确性和简明性C、可读性和文档性D、数据复杂性和程序复杂性7. 计算机内部处理的基本单元是(B )A、数据B、数据元素C、数据项D、数据库8. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要(B )。
数据结构习题集和答案
第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的前趋__结点,才能实现该操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.若将n阶下三角矩阵A,按列优先顺序压缩存放在一维数组F[n(n+1)/2]中,第一个非零元素a11,存于F[0]中,则应存放到F[K]中的非零元素aij(1≤j≤n,1≤j≤i)的下标i,i与K的对应关系是(6)。
(6):A.(2n-j+1)j/2+I-j B.(2n-j+2)(j-1)/2+i-j
第二章线性表
一、单项选择题
1.下面关于线性表叙述中,错误的 是_(1)_。
(1):A.顺序表必须占用一片地址连续的存储单元
B.链表不必占用一片地址连续的存储单元
C.顺序表可以随机存取任一元素
D.链表可以随机存取任一元素
2.在表长为n的单链表中,算法时间复杂度为O(n)的操作是(2)。
(2):A.查找单链表中第i个结点B.在p结点之后插入一个结点
(2)在p结点前插入s结点的语句序列是:
s->prior=p->prior;s->next=p;(13);(14)
(3)删除p结点的直接后继结点的语句序列是:
q=p->next;p->next=q->next;(15);free(q);
(4)删除p结点的直接前驱结点的语句序列是:
q=p->prior;p->prior=q->prior;(16);free(q);
B.Loc(a[0][0])+[i*n+j]*d
C.Loc(a[0][0]+[j*m+i]*d
D.Loc(a[0][0])+[(j-1)*m+i-1]*d
3.设二维数组A[m][n],每个数组元素占d个存储单元,第1个数组元素的存储地址是Loc(a[0][0]),求按列优先顺序存放的数组元素a[j][j](0≤i≤m-1,0≤j≤n-1)的存储地址(3)。
3.栈操作应遵循的原则是(3)。
(3):A.先进先出 B.后进后出 C.后进先出 D.随意进出
4.设队长为n的队列用单循环链表表示且仅设头指针,则进队操作的时间复杂度为(4)。
(4):A.O(1) B.O(log2n) C.O(n) D.O(n2)
5.设栈s和队列q均为空,先将a,b,c,d依次进队列q,再将队列q中顺次出队的元素进栈s,直至队空。再将栈s中的元素逐个出栈,并将出栈元素顺次进队列q,则队列q的状态是(5)。
2.循环队列的优点是什么?设用数组A[m]来存放循环队列,如何判断队满和队空。
3.若进栈序列为abcd,请给出全部可能的出栈序列和不可能的出栈序列。
4.设栈s和队列q初始状态为空,元素a,b,c,d,e和f,依次通过栈s,一个元素出栈后即进人队列,若6个元素出队的序列是bdcfea,则栈s的容量至少应该存多少个元素?
(1)在p结点后插入s结点的语句序列中正确的是(7)。
(7):A.s->next=p->next;p->next->prior=s;
p->next=s;s->next=p->next;
B.p—>next=s;S—>next=p—>next;
p—>next—>prior=s;s—>next=p;
C.p->next=s;p—>next—>prior=s;
(3):A.Loc(a[0][0]+[(i-1)*n+j-1]*d
B.Loc(a[0][0])+[i*n+j]*d
C.Loc(a[0][0]+[(j-1)*m+i]*d
D.Loc(a[0][0])+[j*m+i]*d
4.已知二维数组A[6][10],每个数组元素占4个存储单元,若按行优先顺序存放数组元素a[3][5]的存储地址是1000,则a[0][0]的存储地址是(4)。
(7):A.edcba B.decba C.dceab D.abcde
二、填空题
1.在栈结构中,允许插入、删除的一端称为(1),另一端称为(2)。
2.在队列结构中,允许插入的一端称为(3),允许删除的一端称为(4)。
3.设长度为n的链队列用单循环链表表示,若只设头指针,则进队和出队操作的时间复杂度分别是(5)和(6);若只设尾指针,则进队和出队操作的时间复杂度分别为(7)和(8)。
4.设用少用一个元素空间的数组A[m]存放循环队列,front指向实际队首,rear指向新元素应存放的位置,则判断队空的条件是(9),判断队满的条件是(10),当队未满时,循环队列的长度是(11)。
5.两个栈共享一个向量空间时,可将两个栈底分别设在(12)。
三、应用题.
1.简述线性表、栈和队列有什么异同?
8.下列关于链表说法错误的是(9)。
(9):A.静态链表中存取每一个元素的时间相同
B.动态链表中存取每一个元素的时间不同
C.静态链表上插入或删除一个元素不必移动其他元素
D.动态链表上插入或删除一个元素不必移动其他元素
9.在链表中最常用的操作是在最后一个数据元素之后插入一个数据元素和删除第一个数据元素,则最节省运算时间的存储方式是(10)。
D.找某子串在主串中第一次出现的第一个字符位置
2.设二维数组A[m][n],每个数组元素占用d个存储单元,第一个数组元素的存储地址是如Loc(a[0][0]),求按行优先顺序存放的数组元素a[j][j](0≤i≤m-1,0≤j≤n-1)的存储地址(2)。
(2):A.Loc(a[0][0]+[(i-1)*n+j-1]*d
(5):A.abcd B.dcbaC.bcad D.dbca
6.若用一个大小为6的数组来实现循环队列,且当前front和rear的值分别为3和0,当从队列中删除一个元素,再加入两个元素后,front和rear的值分别为(6)。
(6):A.5和1 B.4和2 C.2和4 D.1和5
7.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是(7)。
(5)删除p结点的语句序列是:
p->prior->next=p->next;(17);free(q);
8.在带有尾指针r的单循环链表中,在尾结点后插入p结点的语句序列是(18);(19);删除第一个结点的语句序列是q=r->next;(20);free(q)。
三、应用题
1.简述顺序表和链表各自的优点。
5.在下列链表中不能从当前结点出发访问到其余各结点的是(5)。
(5):A.单链表 B.单循环链表 C.双向链表 D.双向循环链表
6.在设头、尾指针的单链表中,与长度n有关的操作是(6)。
(6):A.删除第一个结点B.删除最后一个结点
C.在第一个结点之前插入一个结点D.在表尾结点后插入一个结点
7.设p结点是带表头结点的双循环链表中的结点,则
B.p->prior=s;p->prior->next=s;
s->prior=p->prior;s->next=p;
C.p->prior->next=s;p->prior=s;
s->prior=p->prior;s->next=p;
D.p->prior=s;s->next=p;
p->prior->next=s;s->prior=p->prior;
5.已知一个中缀算术表达式为 3 + 4 / (25- (6+15))*8 写出对应的后缀算术表达式(逆波兰表达式)。
四、算法设计题
1.已知q是一个非空顺序队列,s是一个顺序栈,请设计一个算法,实现将队列q中所有元素逆置。
2.已知递归函数:1当n=0时
F(n)=
n·F(n/2)当n>0时
(1)写出求F(n)递归算法;
(4):A.872 B.860 C.868 D.864
5.若将n阶上三角矩阵A,按列优先顺序压缩存放在一维数组F[n(n+1)/2]中,第1个非零元素a11存于F[0]中,则应存放到F[K]中的非零元素aij(1≤i≤n,1≤j≤i的下标i,j与K的对应关系是(5)。
(5):A.i(i+1)/2+j B.i(i-1)/2+j-1
6.编写一个算法,实现以较高的效率从有序顺序表A中删除其值在x和y之间(x≤A[i]≤y)的所有元素。
第三章 栈和队列
一、选择题
1.插入和删除只能在表的一端进行的线性表,称为(1)。
(1):A.队列 B.循环队列 C.栈 D.双栈
2.队列操作应遵循的原则是(2)。
(2):A.先进先出 B.后进先出 C.先进后出 D.随意进出
(8):A.3 B.C.2 D.都不对
C.删除表中第一个结点D.删除p结点的直接后继结点
3.单链表的存储密度(3)。
(3):A.大于1 B.等于1 C.小于1 D.不能确定
4.在表长为n的顺序表中,算法的时间复杂度为O(1)的操作是(4)。
(4):A.在第n个结点之后插入一个结点B.在第i个结点前插入一个新结点
C.删除第i个结点D.求表长
2.分析下列程序段的时间复杂度
(a)for(i=0;i<m;i++)
for(j=0;j<n;j++)
b[i][j]=0;
(b)s=0
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s+=b[i][j];
(c)i=1
While(i<n)
i*=2;
3.在数据结构中,与所使用的计算机无关的是。