数据结构习题集(包含全部答案)
- 格式:doc
- 大小:1.13 MB
- 文档页数:55
数据结构试题集(包含答案-完整版)数据结构试题集(包含答案-完整版)1. 单选题1) 数据结构是一种()。
a) 存储结构b) 算法c) 数据模型d) 网络答案:c) 数据模型解析:数据结构是一种用于组织和存储数据的方式,描述了数据之间的关系以及对数据的操作。
2) 以下哪种数据结构可以通过索引直接访问元素?a) 链表b) 队列c) 栈d) 数组答案:d) 数组解析:数组是一种线性数据结构,可以通过索引直接访问指定位置的元素。
2. 多选题1) 哪些数据结构属于非线性结构?()a) 队列b) 树c) 栈d) 图答案:b) 树d) 图解析:线性结构中的元素存在一对一的关系,非线性结构中的元素存在一对多或多对多的关系,树和图属于非线性结构。
2) 下列哪些操作可以在栈上进行?()a) 入栈b) 出栈c) 查找d) 删除答案:a) 入栈b) 出栈解析:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。
3. 简答题1) 请简要介绍线性表和非线性表。
答案:线性表是数据元素的一个有限序列,元素之间存在一对一的关系。
非线性表是指元素之间存在一对多或多对多的关系,如树和图。
2) 请解释什么是时间复杂度和空间复杂度。
答案:时间复杂度是衡量算法执行效率的度量,表示算法的运行时间随输入规模增长的速度。
空间复杂度是指算法执行过程中所需的存储空间随输入规模增长的速度。
4. 编程题题目:实现一个栈,包含push、pop和getMin三个操作,要求时间复杂度为O(1)。
答案:class MinStack:def __init__(self):self.stack = []self.min_stack = []def push(self, x):self.stack.append(x)if not self.min_stack or x <= self.min_stack[-1]:self.min_stack.append(x)def pop(self):if self.stack.pop() == self.min_stack[-1]:self.min_stack.pop()def getMin(self):return self.min_stack[-1]解析:在栈的基础上,使用一个辅助栈min_stack来记录当前栈中的最小值。
数据结构习题集(自编)之阳早格格创做第一章绪论一、采用题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. 在数据结构中,线性结构的特点是什么?A. 结构中存在唯一的开始结点和终端结点B. 结构中所有结点的前驱和后继都存在C. 结构中所有结点都只有一个直接前驱和一个直接后继D. 结构中存在多个开始结点和终端结点答案:C2. 栈是一种特殊的线性表,其特点是:A. 先进先出B. 先进后出C. 可以同时在两端进行插入和删除操作D. 只能在一端进行插入和删除操作答案:D3. 在二叉树的遍历算法中,先序遍历的顺序是:A. 先访问根结点,然后遍历左子树,最后遍历右子树B. 先遍历左子树,然后访问根结点,最后遍历右子树C. 先遍历右子树,然后访问根结点,最后遍历左子树D. 先遍历左右子树,最后访问根结点答案:A二、填空题4. 在图的遍历中,______算法可以避免重复访问同一顶点。
5. 哈希表的冲突可以通过______方法来解决。
答案:4. 深度优先搜索(DFS)5. 链地址法或开放地址法三、简答题6. 简述排序算法中的快速排序算法的基本原理。
答案:快速排序算法是一种分治算法,它通过选择一个元素作为“基准”,然后将数组分为两个子数组,一个包含小于基准的元素,另一个包含大于基准的元素。
然后对这两个子数组递归地应用快速排序算法。
7. 解释什么是递归,并给出一个递归函数的例子。
答案:递归是一种在函数中调用自身的编程技术。
递归函数必须有一个明确的终止条件,以避免无限递归。
例如,计算阶乘的递归函数如下:```int factorial(int n) {if (n == 0) return 1; // 终止条件return n * factorial(n - 1); // 递归调用}```四、编程题8. 编写一个函数,实现单链表的反转。
答案:```c// 假设ListNode是链表节点的定义ListNode* reverseList(ListNode* head) {ListNode* prev = NULL;ListNode* curr = head;ListNode* next = NULL;while (curr != NULL) {next = curr->next; // 保存下一个节点curr->next = prev; // 反转指针prev = curr; // 移动prevcurr = next; // 移动curr}return prev; // 新的头节点}```9. 给定一个整数数组,请实现一个函数来找到数组中的最长连续子序列的长度。
数据结构试题库及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用()来存储。
A. 链表B. 栈C. 队列D. 数组答案:D2. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C3. 在二叉树的遍历算法中,先访问根节点,然后遍历左子树,最后遍历右子树的遍历方式是()。
A. 先序遍历B. 中序遍历C. 后序遍历D. 层序遍历答案:A4. 哈希表的冲突解决方法不包括以下哪种?A. 链地址法B. 线性探测法C. 二分查找法D. 再散列法答案:C5. 在图的遍历算法中,广度优先搜索(BFS)使用的辅助数据结构是()。
A. 栈B. 队列C. 堆D. 链表答案:B6. 下列关于堆的描述中,错误的是()。
A. 堆是一种特殊的完全二叉树B. 堆中的每个节点的值都大于其子节点的值C. 堆可以用于实现优先队列D. 堆的插入操作的时间复杂度为O(log n)答案:B7. 在一个长度为n的数组中,使用二分查找算法查找一个元素的最坏情况下的时间复杂度是()。
A. O(1)B. O(n)C. O(n^2)D. O(log n)答案:D8. 以下哪个数据结构不是线性结构?A. 链表B. 栈C. 队列D. 二叉树答案:D9. 以下哪个算法是动态查找表?A. 直接索引B. 顺序查找C. 二分查找D. 哈希表答案:D10. 在图的表示方法中,邻接矩阵表示法的缺点是()。
A. 占用空间大B. 占用空间小C. 插入和删除操作复杂D. 遍历操作复杂答案:A二、填空题(每题2分,共20分)1. 在一个长度为n的数组中,使用顺序查找算法查找一个元素的时间复杂度为________。
答案:O(n)2. 一个具有n个节点的完全二叉树的高度为________。
答案:log2(n) + 1(向上取整)3. 一个长度为n的链表,删除一个节点的时间复杂度为________。
答案:O(1)4. 在图的表示方法中,邻接表表示法的缺点是________。
数据结构习题集(自编)第一章绪论一、选择题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;2nA. 2n B.n D.logC.n210.以下数据结构中,()是非线性数据结构A.树B.字符串 C .队列D.栈11. 下列数据中,()是线性数据结构。
A.哈夫曼树 B.有向无环图 C.二叉排序树 D. 栈12.以下属于逻辑结构的是()。
A.顺序表 B.哈希表 C.有序表 D.单链表二、填空题1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理, ________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
(数据、数据)2、数据元素是数据的 ______,有些情况下也称为元素、结点、顶点、记录等。
数据结构习题集和答案第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. 在数据结构中,线性结构的特点是:A. 元素之间存在一对一关系B. 元素之间存在一对多关系C. 元素之间存在多对多关系D. 元素之间存在一对一或多对多关系答案:A2. 栈(Stack)是一种特殊的线性表,其特点是:A. 只能在一端进行插入和删除操作B. 可以在两端进行插入和删除操作C. 只能在一端进行插入操作,另一端进行删除操作D. 可以在任意位置进行插入和删除操作答案:A3. 在二叉树中,度为1的节点数目为2,度为0的节点数目也为2,该二叉树的节点总数是:A. 5B. 6C. 7D. 8答案:B二、简答题1. 请简述什么是哈希表,并说明其主要优点。
答案:哈希表是一种通过哈希函数将键映射到表中一个位置来访问记录的数据结构。
其主要优点包括:平均情况下,查找、插入和删除操作的时间复杂度为O(1),即常数时间内完成操作;空间效率高,能够存储大量数据。
2. 描述图的深度优先搜索(DFS)算法的基本思想。
答案:深度优先搜索算法的基本思想是从一个顶点开始,尽可能深地搜索图的分支。
搜索过程中使用一个栈来保存路径上的顶点。
当搜索到一个顶点时,先访问该顶点,然后依次搜索其所有未被访问过的邻接顶点。
如果当前顶点的所有邻接顶点都被访问过,则回溯到上一个顶点,继续搜索其他邻接顶点。
三、应用题1. 给定一个无向图,使用邻接表表示,请编写一个算法找出图中的所有连通分量。
答案:首先,创建一个访问过的顶点集合。
然后,从图中任意一个未被访问的顶点开始,执行深度优先搜索(DFS)。
每次DFS完成后,就找到了一个连通分量。
重复这个过程,直到所有顶点都被访问过,即可找到图中的所有连通分量。
2. 假设有一个数组,需要频繁地进行查找、插入和删除操作,请设计一个适合这种场景的数据结构,并说明其优势。
答案:对于这种场景,可以使用平衡二叉搜索树(如AVL树或红黑树)。
这些数据结构可以保证在最坏情况下,查找、插入和删除操作的时间复杂度为O(log n)。
判断题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,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章绪论习题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.在数据结构中,从逻辑上可以把数据结构分成【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。
算法的优劣与算法的描述语言无关,但与使用的计算机有关【。
数据结构考试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,线性结构和非线性结构的区别在于()。
A. 结构中元素的个数B. 结构中元素之间是否有一对一的对应关系C. 结构中元素之间是否有层次关系D. 结构中元素之间是否是线性排列答案:C2. 一个栈的入栈序列为1,2,3,4,5,那么可能的出栈序列为()。
A. 54321B. 12345C. 34521D. 54123答案:C3. 在二叉树中,度为2的结点数为n,度为1的结点数为m,度为0的结点数为p,则m和p之间的关系是()。
A. m = n + 1B. p = n + 1C. m = n - 1D. p = n - 1答案:A4. 哈希表的冲突解决方法中,开放定址法和链地址法的主要区别在于()。
A. 是否使用链表B. 是否使用数组C. 是否使用循环探测D. 是否使用二次探测5. 快速排序算法的时间复杂度在最好、最坏和平均情况下分别是()。
A. O(n), O(n^2), O(nlogn)B. O(nlogn), O(n^2), O(nlogn)C. O(n), O(nlogn), O(n^2)D. O(n^2), O(nlogn), O(n)答案:B6. 在图的遍历算法中,深度优先搜索(DFS)和广度优先搜索(BFS)的主要区别在于()。
A. 是否使用栈B. 是否使用队列C. 是否使用递归D. 是否使用图的邻接表表示7. 一个长度为n的有序数组,使用二分查找法查找一个元素的最好、最坏和平均时间复杂度分别是()。
A. O(1), O(n), O(n)B. O(logn), O(n), O(logn)C. O(n), O(1), O(logn)D. O(1), O(logn), O(n)答案:B8. 在下列排序算法中,时间复杂度为O(n)的是()。
A. 冒泡排序B. 快速排序C. 归并排序D. 桶排序答案:D9. 一个图的邻接矩阵表示中,若该图是无向图,则矩阵一定是()。
数据结构试题及答案一、选择题(每题5分,共25分)1. 以下哪个数据结构是线性结构?A. 栈B. 树C. 队列D. 图答案:A2. 以下哪个操作的时间复杂度是O(1)?A. 在链表中插入一个元素B. 在数组中查找一个元素C. 在二叉搜索树中插入一个元素D. 在图中查找一个顶点的邻居答案:B3. 以下哪个数据结构是非线性结构?A. 栈B. 队列C. 数组D. 树答案:D4. 以下哪个操作不能在O(1)时间内完成?A. 删除链表的尾节点B. 删除数组的最后一个元素C. 删除二叉搜索树的最小值节点D. 删除图中任意两个顶点之间的边答案:D5. 以下哪个数据结构不具有后进先出(LIFO)的特点?A. 栈B. 队列C. 数组D. 链表答案:B二、填空题(每题5分,共25分)1. 在_________中,任何节点的两个子节点之间恰好有_________条边。
答案:树,02. 动态数组是_________数据结构,它可以在_________时间内改变其大小。
答案:线性,O(1)3. 栈和队列都是_________结构,它们都具有_________特点。
答案:线性,后进先出(LIFO)4. 哈希表是通过_________函数将键映射到_________上的数据结构。
答案:哈希,数组索引5. 在_________中,每个节点最多有_________个子节点。
答案:二叉树,2三、判断题(每题5分,共25分)1. 链表比数组更适合进行频繁的插入和删除操作。
()2. 深度优先搜索(DFS)和广度优先搜索(BFS)都可以用来遍历图。
()3. 堆是一种完全二叉树,且满足堆积的性质。
()4. 哈希表的查找时间复杂度为O(1)。
()5. 并查集是一种用于解决集合合并和查找问题的数据结构。
()四、简答题(每题10分,共30分)1. 简述二分搜索树(BST)的特点及其性质。
答案:二分搜索树是一种有序的二叉树,它的特点是:对于任意节点,其左子树上的所有节点的值都小于该节点的值,其右子树上的所有节点的值都大于该节点的值。
程序复杂性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 ;。
数据结构考试题库及答案一、选择题1. 下列哪个不是线性结构?A. 栈B. 队列C. 双向链表D. 树答案:D2. 在顺序存储结构中,数据元素的物理位置与逻辑位置相同的是哪种结构?A. 栈B. 队列C. 线性表D. 树答案:C3. 下列哪种排序算法的时间复杂度是O(nlogn)?A. 冒泡排序B. 选择排序C. 快速排序D. 插入排序答案:C4. 在二叉树中,度为0的节点称为()。
A. 根节点B. 内节点C. 叶子节点D. 父节点答案:C5. 下列哪种图的邻接矩阵是对称的?A. 有向图B. 无向图C. 有向连通图D. 无向连通图答案:B二、填空题6. 在链表中的每个节点至少包含两个部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。
7. 在顺序表中,元素之间的逻辑关系是由它们的相对位置来体现的。
8. 快速排序的基本思想是:在待排序序列中选取一个基准元素,将序列中所有小于基准元素的元素放在基准元素前面,所有大于基准元素的元素放在基准元素后面。
9. 图中的每个节点称为顶点,顶点之间的连线称为边。
10. 在哈希表中,哈希函数的目的是将关键字映射到散列地址。
三、判断题11. 在顺序表中插入一个元素的时间复杂度为O(1)。
()答案:错误。
插入一个元素的时间复杂度为O(n),因为可能需要移动其他元素。
12. 在链表中删除一个元素的时间复杂度为O(n)。
()答案:错误。
删除一个元素的时间复杂度为O(1),只要找到该元素的前一个节点即可。
13. 二分查找只适用于有序的顺序表。
()答案:正确。
14. 在二叉树中,任意节点的度数不会超过2。
()答案:正确。
15. 图的邻接表表示法比邻接矩阵表示法更加节省空间。
()答案:正确。
四、应用题16. 请用C语言实现一个顺序栈的数据结构,并给出入栈、出栈和判断栈空的操作。
答案:```c#define MAXSIZE 100typedef struct {int data[MAXSIZE];int top;} SeqStack;// 初始化栈void InitStack(SeqStack s) {s->top = -1;}// 判断栈是否为空int StackEmpty(SeqStack s) {return s->top == -1;}// 入栈int Push(SeqStack s, int x) {if (s->top == MAXSIZE - 1) {return 0; // 栈满}s->data[++s->top] = x;return 1;}// 出栈int Pop(SeqStack s, int x) {if (s->top == -1) {return 0; // 栈空}x = s->data[s->top--];return 1;}```17. 请简述二分查找的基本思想。
数据结构习题集一、选择题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.数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()和运算的学科。
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;nA. 2n B.n C.n2 D.log210.以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队列 D.栈11. 下列数据中,()是线性数据结构。
A.哈夫曼树 B.有向无环图 C. 二叉排序树 D. 栈12.以下属于逻辑结构的是()。
A.顺序表 B. 哈希表 C.有序表 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)。
(n)。
4. 该算法的时间复杂度为:log3。
5. 该算法的时间复杂度为: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-1 D.i+1 2.从一个具有n个元素的线性表中查找其值等于x的结点时,在查找成功的情况下,需平均比较( )个元素结点。
A.n/2 B.n C.(n-1)/2 D.(n +1)/2 3.对一个具有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……an)中,删除任意一个结点所需移动结点的平均移动次数为( )A.n B.n/2 C.(n-1)/2 D.(n+l)/2 11.在线性表的下列存储结构中,读取第i个元素花费的时间最少的是()。