数据结构练习题-队列
NOIP《 数据结构》练习题及答案
习题:1.设循环队列中数组的下标范围是1–n,其头尾指针分别为f和r,则其元素个数为(D).A.r- f B.r- f +1 C.(r- f ) MOD n+1 D.(r- f + n) MOD n 2.线性表若采用链表存贮结构,要求内存中可用存贮单元地址(D).A.必须连续 B.部分地址必须连续 C.一定不连续 D.连续不连续均可3.下列叙述中,正确的是( D ).A.线性表的线性存贮结构优于链表存贮结构B.队列的操作方式是先进后出C.栈的操作方式是先进先出D.二维数组是指它的每个数据元素为一个线性表的线性表4.在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找12,所需的关键码比较的次数为( C )A.2B.3C.4D.55.若已知一个栈的入栈顺序是1,2,3,…,n,其输出序列为P1,P2,P3,…,Pn,若P1是n,则Pi是( C )A.iB.n-1C.n-i+1D.不确定6.如果一个栈初始时为空,且当前栈中的元素从栈底到栈顶依次为a,b,c(如图所示),另有元素d已经出栈,则可能的入栈顺序是( D )。
A. a d c bB. b a c dC. a c b dD. d a b c7.( B )是一种先进先出的线性表A. 栈B. 队列C. 哈希表(散列表)D.二叉树8.如果一棵二叉树中序遍历为BAC,那么它的先序遍历不可能是( C )。
A. ABCB. CBAC. ACBD. BAC9.元素R1、R2、R3、R4、R5入栈的顺序为R1、R2、R3、R4、R5。
如果第1个出栈的是R3,那么第5个出栈的不可能是( B )。
A. R1B.R2C.R4D.R510. 设栈S的初始状态为空,元素a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有(C)。
A. a, b, c, e, dB. b, c, a, e, dC. a, e, c, b, dD. d, c, e, b, a 11.一个高度为h的二叉树最小元素数目是( B )。
数据结构第三章栈和队列3习题
第三章栈和队列试题一、单项选择题1.栈的插入和删除操作在()进行。
A. 栈顶B. 栈底C. 任意位置D. 指定位置2.当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。
A. top++;B. top--;C. top = 0;D. top;3.若让元素1,2,3依次进栈,则出栈次序不可能出现()种情况。
A. 3, 2, 1B. 2, 1, 3C. 3, 1, 2D. 1, 3, 24.在一个顺序存储的循环队列中,队头指针指向队头元素的()位置。
A. 前一个B. 后一个C. 当前D. 后面5.当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为()。
A. n-2B. n-1C. nD. n+16.从一个顺序存储的循环队列中删除一个元素时,需要()。
A. 队头指针加一B. 队头指针减一C. 取出队头指针所指的元素D. 取出队尾指针所指的元素7.假定一个顺序存储的循环队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。
A. front+1 == rearB. rear+1 == frontC. front == 0D. front == rear8.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。
A. front == rearB. front != NULLC. rear != NULLD. front == NULL9.设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。
若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行操作()。
A. top->link = s;B.s->link = top->link; top->link = s;C. s->link = top; top = s;D. s->link = top; top = top->link;10.设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。
队列的练习题
队列的练习题队列是一种常用的数据结构,广泛应用于计算机科学和软件开发领域。
它具有先进先出(FIFO)的特性,允许从一端插入数据,从另一端删除数据。
在本篇文章中,我们将探讨一些与队列相关的练习题,以帮助读者更好地理解和运用队列的概念。
一、将队列逆序给定一个队列,要求将其逆序。
可以使用辅助栈来实现这个功能。
首先将队列中的所有元素依次出队并入栈,然后再将栈中的元素出栈并入队即可。
二、找到队列中的最大值给定一个队列,要求找到队列中的最大值。
可以使用双端队列来实现这个功能。
遍历队列中的每个元素,将其与双端队列中的尾部元素比较,如果当前元素大于尾部元素,则将尾部元素出队,直到当前元素小于等于尾部元素。
然后将当前元素入队。
这样,双端队列中的头部元素就是队列中的最大值。
三、判断队列是否为空判断队列是否为空是一个非常常见的操作,可以使用队列的大小来判断。
如果队列的大小为0,则说明队列为空;否则,队列不为空。
四、计算队列中元素的平均值给定一个队列,要求计算队列中元素的平均值。
可以遍历队列中的每个元素,累加它们的值,然后除以队列的大小即可得到平均值。
五、合并两个队列给定两个队列,要求将它们合并成一个队列。
可以使用两个指针分别指向两个队列的头部,然后依次比较两个指针所指向的元素大小,将较小的元素入队,直到其中一个队列为空。
然后将剩下的队列中的元素依次入队即可。
六、将队列的前半部分元素移到队列的末尾给定一个队列,要求将队列的前半部分元素移到队列的末尾。
可以使用两个指针,一个指向队列的头部,一个指向队列的中部。
首先,遍历队列,移动指向中部的指针,直到指向中部的指针达到队列末尾。
然后,从中部指针开始,将队列中的元素依次出队并入队,直到指向头部的指针也达到中部。
通过以上的练习题,我们可以更好地理解队列的操作和运用。
队列是一种非常有用的数据结构,可以用于解决很多实际问题。
希望本篇文章能对您的学习和工作有所帮助。
数据结构练习题第三章栈、队列和数组习题及答案
第三章栈、队列和数组一、名词解释:1.栈、栈顶、栈底、栈顶元素、空栈2.顺序栈3.链栈4.递归5.队列、队尾、队头6.顺序队7.循环队8.队满9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵二、填空题:1.栈修改的原则是_________或称________,因此,栈又称为________线性表。
在栈顶进行插入运算,被称为________或________,在栈顶进行删除运算,被称为________或________。
2.栈的基本运算至少应包括________、________、________、________、________五种。
3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“________”。
4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“________”。
5.一般地,栈和线性表类似有两种实现方法,即________实现和________实现。
6.top=0表示________,此时作退栈运算,则产生“________”;top=sqstack_maxsize-1表示________,此时作进栈运算,则产生“________”。
7.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以填充。
int InitStack(SqStackTp *sq){ ________;return(1);}8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。
Int Push(SqStackTp *sq,DataType x){ if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);}else{________________:________________=x;return(1);}}9.以下运算实现在顺序栈上的退栈,请在________________用适当句子予以填充。
数据结构练习题-队列
选择题1. 用链接方式存储的队列,在进行删除运算时()。
A. 仅修改头指针B. 仅修改尾指针C. 头、尾指针都要修改D. 头、尾指针可能都要修改2. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时( )。
A.仅修改队头指针 B. 仅修改队尾指针C. 队头、队尾指针都要修改D. 队头,队尾指针都可能要修改3.递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。
A.队列 B.多维数组 C.栈 D. 线性表4. 假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。
A.(rear-front+m)%m B.rear-front+1 C.(front-rear+m)%mD.(rear-front)%m5. 循环队列存储在数组A[0..m]中,则入队时的操作为()。
A. rear=rear+1B. rear=(rear+1) mod (m-1)C. rear=(rear+1) mod mD. rear=(rear+1)mod(m+1)6. 若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( )A. 1和 5B. 2和4C. 4和2D. 5和17. 最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。
A. (rear+1) MOD n=frontB. rear=frontC.rear+1=front D. (rear-l) MOD n=front8. 栈和队列的共同点是()。
A. 都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点9. 栈和队都是()A.顺序存储的线性结构 B. 链式存储的非线性结构C.限制存取点的线性结构D. 限制存取点的非线性结构10.用单链表表示的链式队列的队头在链表的()位置。
第三章栈和队列习题-数据结构
第三章栈和队列习题-数据结构习题三栈和队列一单项选择题1.在作进栈运算时,应先判别栈是否(①),在作退栈运算时应先判别栈是否(②)。
当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③)。
①,②:A.空B.满C.上溢D.下溢③:A.n-1B.nC.n+1D.n/22.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,...,pn,若p1=3,则p2为()。
A可能是2B一定是2C可能是1D一定是13.有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?()A.543612B.453126C.346521D.2341564.设有一顺序栈S,元素1,2,3,4,5,6依次进栈,如果6个元素出栈的顺序是2,3,4,6,5,1,则栈的容量至少应该是()A.2B.3C.5D.65.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。
A.|top[2]-top[1]|=0B.top[1]+1=top[2]C.top[1]+top[2]=mD.top[1]=top[2]6.执行完下列语句段后,i值为:()intf(int某){return((某>0)某某f(某-1):2);}inti;i=f(f(1));A.2B.4C.8D.无限递归7.表达式3某2^(4+2某2-6某3)-5求值过程中当扫描到6时,对象栈和算符栈为(),其中^为乘幂A.3,2,4,1,1;(某^(+某-B.3,2,8;(某^-C.3,2,4,2,2;(某^(-D.3,2,8;(某^(-8.用链接方式存储的队列,在进行删除运算时()。
A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针可能都要修改9.递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。
优先队列练习题
优先队列练习题优先队列是一种特殊的数据结构,它能够根据元素的优先级来确定元素的顺序。
在优先队列中,我们可以插入元素并按照其优先级进行排序,然后可以从队列中取出优先级最高的元素。
优先队列经常用于解决一些需要按照优先级处理任务的问题,比如任务调度、事件处理等。
在本文中,我们将介绍一些优先队列的经典练习题,帮助读者理解优先队列的应用。
1. 合并K个有序数组题目描述:给定K个有序数组,将它们合并成一个有序数组。
解题思路:可以使用优先队列来解决此问题。
首先,我们将每个数组的第一个元素加入优先队列,并附加上数组的索引值。
然后,以元素值为优先级进行排序。
每次取出队首元素,将其加入结果数组,并将来源数组中下一个元素加入优先队列。
重复此过程,直到优先队列为空。
2. 求解前K个最大元素题目描述:给定一个整数数组和一个整数K,找出数组中前K个最大的元素。
解题思路:利用一个容量为K的小顶堆(也可以使用大顶堆),遍历整个数组,将元素依次加入堆中。
当堆的大小超过K时,将堆顶元素弹出,保证堆中的元素始终是前K个最大的元素。
3. 求解数据流中第K大的元素题目描述:设计一个类,用来找出数据流中第K大的元素。
请注意,第K大的元素不一定是第K个不同的元素。
解题思路:使用一个容量为K的小顶堆(也可以使用大顶堆),遍历数据流,将元素依次加入堆中。
当堆的大小超过K时,将堆顶元素弹出,保证堆中的元素始终是数据流中第K大的元素。
4. 合并K个有序链表题目描述:给定K个有序链表,将它们合并成一个有序链表。
解题思路:可以使用优先队列来解决此问题。
首先,我们将每个链表的头结点加入优先队列,并附加上链表的索引值。
然后,以结点值为优先级进行排序。
每次取出队首结点,将其加入结果链表,并将来自同一链表的下一个结点加入优先队列。
重复此过程,直到优先队列为空。
总结:通过上述几个优先队列的练习题,我们可以看到优先队列在处理带有优先级的问题时的强大威力。
无论是合并有序数组、求解前K个最大元素,还是合并有序链表,优先队列都能够以高效的方式完成任务。
《数据结构》习题集:第3章 栈和队列
第3章栈和队列一、选择题1.栈结构通常采用的两种存储结构是(A )。
A、顺序存储结构和链表存储结构B、散列和索引方式C、链表存储结构和数组D、线性链表结构和非线性存储结构2.设栈ST 用顺序存储结构表示,则栈ST 为空的条件是( B )A、ST.top-ST.base<>0B、ST.top-ST.base==0C、ST.top-ST.base<>nD、ST.top-ST.base==n3.向一个栈顶指针为HS 的链栈中插入一个s 结点时,则执行( C )A、HS->next=s;B、s->next=HS->next;HS->next=s;C、s->next=HS;HS=s;D、s->next=HS;HS=HS->next;4.从一个栈顶指针为HS 的链栈中删除一个结点,用x 保存被删除结点的值,则执行( C)A 、x=HS;HS=HS->next;B 、HS=HS->next;x=HS->data;C 、x=HS->data;HS=HS->next;D 、s->next=Hs;Hs=HS->next;5.表达式a*(b+c)-d 的后缀表达式为( B )A、abcdd+-B、abc+*d-C、abc*+d-D、-+*abcd6.中缀表达式A-(B+C/D)*E 的后缀形式是( D )A、AB-C+D/E*B、ABC+D/E*C、ABCD/E*+-D、ABCD/+E*-7.一个队列的入列序列是1,2,3,4,则队列的输出序列是( B )A、4,3,2,1B、1,2,3,4C、1,4,3,2D、3,2,4,18.循环队列SQ 采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front 和rear,则判定此循环队列为空的条件是()A、Q.rear-Q.front==nB、Q.rear-Q.front-1==nC、Q.front==Q.rearD、Q.front==Q.rear+19.循环队列SQ 采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front 和rear,则判定此循环队列为满的条件是()A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==(Q.rear+1)%nD、Q.front!=(Q.rear+1)%n10.若在一个大小为6 的数组上实现循环队列,且当前rear 和front 的值分别为0 和3,当从队列中删除一个元素,再加入两个元素后,rear 和front 的值分别为()A、1,5B、2, 4C、4,2D、5,111.用单链表表示的链式队列的队头在链表的()位置A、链头B、链尾C、链中12.判定一个链队列Q(最多元素为n 个)为空的条件是()A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==(Q.rear+1)%nD、Q.front!=(Q.rear+1)%n13.在链队列Q 中,插入s 所指结点需顺序执行的指令是()A 、Q.front->next=s;f=s;B 、Q.rear->next=s;Q.rear=s;C 、s->next=Q.rear;Q.rear=s;D 、s->next=Q.front;Q.front=s;14.在一个链队列Q 中,删除一个结点需要执行的指令是()A、Q.rear=Q.front->next;B、Q.rear->next=Q.rear->next->next;C、Q.front->next=Q.front->next->next;D、Q.front=Q.rear->next;15.用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()A、仅修改队头指针B、仅修改队尾指针C、队头尾指针都要修改D、队头尾指针都可能要修改。
数据结构优先队列图等总结及习题
优先队列、图等总结及习题一、优先队列1、定义优先队列(priority queue)是0个或多个元素的集合,每个元素都有一个优先权或值。
与FIFO结构的队列不同,优先队列中元素出队列的顺序由元素的优先级决定。
从优先队列中删除元素是根据优先权高或低的次序,而不是元素进入队列的次序.对优先队列执行的操作有:1)查找一个元素2)插入一个新元素3)删除一个元素2、描述线性表、堆、左高树(1)线性表⏹采用无序线性表描述最大优先队列公式化描述(利用公式Location(i)=i-1)◆插入:表的右端末尾执行,时间: Θ(1) ;◆删除:查找优先权最大的元素,时间:Θ(n) ;使用链表,◆插入:在链头执行,时间: Θ(1) ;◆删除: Θ(n) ;⏹采用有序线性表描述最大优先队列公式化描述(利用公式Location(i)=i-1,元素按递增次序排列)◆插入: O(n) ;删除: O(1) ;使用链表(按递减次序排列)插入: O(n) ;删除: O(1)(2)堆◆最大/最小树◆最大/最小堆初始化、插入、删除。
(3)左高树定义(重量优先、高度优先);操作:创建、插入、删除。
3、应用(1)堆排序(2)哈夫曼编码(3)归并排序二、图1、定义⏹图(graph)是一个用线或边连接在一起的顶点或节点的集合。
G = (V,E)V 是顶点集. E是边集.顶点也叫作节点( nodes)和点(points).E中的每一条边连接V中两个不同的顶点。
边也叫作弧(arcs)或连线(lines) 。
可以用(i,j)来表示一条边,其中i和j是E所连接的两个顶点。
不带方向的边叫无向边(undirected edge)。
对无向边来说,(i,j)和(j,i)是一样的。
带方向的边叫有向边(directed edge),而对有向边来说,(i,j)和(j,i)是不同的。
有向图、无向图、带权有向图、带权无向图2、描述邻接矩阵、邻接压缩表、邻接链表(1)邻接矩阵(2)邻接压缩表(3)邻接链表3、基本操作及应用(1)基本操作求是否存在边、顶点度数…,DFS、BFS(2)应用求路径、求连通分支、判别连通性…三、贪心算法1、单源最短路径2、拓扑排序3、最小耗费生成树四、分而治之1、快速排序2、归并排序习题:1、归并排序-优先队列练习232、已知图G 的邻接矩阵如下所示:由邻接矩阵画出相应的图G ;图中所有顶点是否都在它的拓扑有序序列中?⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡01000001010010103、分别用深度优先搜索和宽度优先搜索遍历下图所示的无向图,给出以1为起点的顶点访问序列(同一个顶点的多个邻接点,按数字顺序访问),给出一棵深度优先生成树和宽度优先生成树。
数据结构习题精编:栈和队列-数据结构栈和队列考题
20.假设以数组A[n]存放循环队列的元素,其头指针front指向队头元素的前一个位
置、尾指针rear指向队尾元素所在的存储位置,则在少用一个元素空间的前提下,
队列满的判定条件为
A.rear= =frontB.(front+1)%n= =rear
A.3、2、8;# * ^ -B.3、2、4、1、1;# * ^ ( + * -
C.3、2、8;# * ^ ( -D.3、2、4、2、2;# * ^ ( -
19.设数组A[m]为循环队列Q的存储空间,front为队头指针,rear为队尾指针,则
判定Q为空队列的条件是
A..front= =rearB.(rear-front)%m= =1
C.rear+1= =frontD.(rear+1)%n= =front
21.循环队列sq中,用数组elem[0..25]存放数据元素,sq.front指示队头元素的前一
个位置,sq.rear指示队尾元素的当前位置,设当前sq.front为20,sq.rear为12,则
当前队列中的元素个数为
A.8B.16C.17D.18
C.top[1]+top[2]==mD.top[2]-top[1]!=0
17.表达式a*(b+c)-d的后缀表达式是
A.abcd*+-B.abc+*d-C.abc*+d-D.-+*abcd
18.在表达式3* 2^(4+2*2-6*3)-5(其中^为乘幂)求值过程中,当扫描到6时,操作数
栈和操作符栈分别为
为25,则rear应指向的元素是
数据结构练习题1
数据结构练习题1⼀、单项选择题1.若⽤⼀个⼤⼩为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除⼀个元素,再加⼊两个元素后,rear和front的值分别为多少?( )A. 1和 5B. 2和4C. 4和2D. 5和1⼤⼩为6的数组:下标从0-5;从前⾯出队,从后⾯⼊队front(前⾯)=3rear(后⾯)=0当出队列中删除⼀个元素,也就是出队,即front+1:=4再插⼊两个元素,即rear+2= 2【注】循环队列中,由于⼊队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。
因此,⽆法通过条件front==rear来判别队列是"空"还是"满"。
2.循环队列A[0..m-1]存放其元素值,⽤front和rear分别表⽰队头和队尾,则当前队列中的元素数是( )。
A. (rear-front+m)%mB. rear-front+1C. rear-front-1D. rear-front3.for(i=0;ifor(j=0;jA[i][j]=i*j;上⾯算法的时间复杂度为( )A.O(m2)B.O(n2)C.O(m×n)D.O(m+n)4.设h是指向⾮空带表头结点的循环链表的头指针,p是辅助指针。
执⾏程序段p=h;while (p->next->next!=h)p=p->next;p->next=h;后(其中,p->next为p指向结点的指针域),则( )A. p->next指针指向链尾结点B. h指向链尾结点C. 删除链尾前⾯的结点D. 删除链尾结点5.假设带头结点的单向循环链表的头指针为head,则该链表为空的判定条件是()A.head= =NULLB.head–>next= =NULLC.head!=NULLD.head–>next= =head6. 设顺序表有19个元素,第⼀个元素的地址为200,且每个元素占3个字节,则第14个元素的存储地址为( )A.236B.239C.242D.2457. 若⼀棵⼆叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A .9B .11C .15D .不确定8. n 个结点的线索⼆叉树上含有的线索数为()A .2nB .n -lC .n +lD .n9. 设有⼀个栈,按A 、B 、C 、D 的顺序进栈,则可能为出栈序列的是( )A.DCBAB.CDABC.DBACD.DCAB10. 归并排序中,归并的趟数是( )。
《数据结构》-数据结构试卷第三章
《数据结构》期末复习题及参考答案- 第3章栈和队列一、选择题1、对于栈,操作数据的原则是()。
A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2、要求数据遵循FIFO(先进先出)原则的数据结构是()。
A. 线性表B. 链表C. 队列D. 栈3、若进栈的序列为1,2,3,4,则以下哪一个不可能是一个出栈序列。
A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 65、设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。
(A) f->next=c;f=s (B) r->next=s;r=s(C) s->next=r;r=s (D) s->next=f;f=s7、一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是()。
A. 2 3 4 1 5B. 5 4 1 3 2C. 2 3 1 4 5D. 1 5 4 3 28、数字1、2依次入栈,则出栈的顺序可能有()种情况;数字1、2依次进入队列,则出队列的顺序可能有()种情况。
A. 1 , 2B. 2 , 1C. 2 , 2D. 1 , 19、设一个栈的输入序列是1,2,3,4,5,则下列序列中,是栈的合法输出序列的是()。
A. a,c,b,dB. b, c,d,aC. c, d,b, aD. d, c,a,b11、顺序存储的栈和队列中已经各有N个结点,要删除一个结点分别需要移动数据()次和()次。
A. N/2 , NB. N , N/2C. 0 , ND. N , 012、设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是( )。
A. 递归部分B. 终止条件和递归部分C. 迭代部分D.终止条件和迭代部分14、如下四个选项中,那个选项是能够正确判断循环队列是否排满元素的操作(其中MAXQSIZE表示队列的容量)():A.if (Q.rear == Q.front) …B.if (Q.rear == (Q.front + MAXQSIZE))C.if (Q.rear == (Q.front + 1) % MAXQSIZE)的元素个数为()。
《数据结构》 队列的练习题(内含答案)
• A.5和1
B.4和2
• C.2和4
D.1和5
习题4
• 16.栈和队列的 C共同)点。( • A.都是先进先出 • B.都是先进后出 • C.只允许在端点处插入和删除元素 • D.没有共同点 • 17.栈和队都是( C )。 • A.顺序存储的线性结构 • B.链式存储的非线性结构 • C.限制存取点的线性结构 • D.限制存取点的非线性结构
习题4
• 二、填空题
• 1.循环队列的引入,目的是为了克服 假溢出 现象。 • 2.在队列中存取数据应遵循的原则是 先进先出 。 • 3. 队列 是被限定为只能在表的一端进行插入运算,在
表的另一端进行删除运算的线性表。 • 4.在队列中,允许插入的一端称为 队尾 。 • 5.在队列中,允许删除的一端称为 队头 。 • 6.队列在进行出队操作时,首先要判断队列是否为 空 。
• A.(rear+1) % n==front
B.rear==front
• C.rear+1==front
D.(rear-1) % n==front
习题4
• 8.最大容量为n的循环队列,队尾指针是rear,队头是 front,则队满的条件是( A )。
• A.(rear+1) % n==front
• 13.循环队列SQ队满的条件是(B )。
• A.SQ->rear==SQ->front
• B.(SQ->rear+1)% MAXLEN ==SQ->front
• C.SQ->rear==0
• D.SQ->front==0
习题4
• 14.设链栈中结点的结构:data为数据域,next为指针域, 且top是栈顶指针。若想在链栈的栈顶插入一个由指针s所 指的结点,则应执行下列( C )操作。
广州大学松田学院4数据结构复习题-队列-参考答案
4数据结构复习题(队列)一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)(√)(1)队列是限制在两端进行操作的线性表。
(√)(2)判断顺序队列为空的标准是头指针和尾指针都指向同一个结点。
(×)(3)在链队列上做出队操作时,会改变front指针的值。
(√)(4)在循环队列中,若尾指针rear大于头指针front,其元素个数为rear- front。
(×)(5)在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是p=h。
(√)(6)链队列在一定范围内不会出现队满的情况。
(×)(7)在循环链队列中无溢出现象。
(×)(8)栈和队列都是顺序存储的线性结构。
(×)(9)在队列中允许删除的一端称为队尾。
(×)(10)顺序队和循环队关于队满和队空的判断条件是一样的。
二.填空题(1)在队列中存取数据应遵循的原则是先进先出。
(2)队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
(3)在队列中,允许插入的一端称为队尾。
(4)在队列中,允许删除的一端称为队首(或队头)。
(5)队列在进行出队操作时,首先要判断队列是否为空。
(6)顺序队列在进行入队操作时,首先要判断队列是否为满。
(7)顺序队列初始化后,front=rear= -1 。
(8)解决顺序队列“假溢出”的方法是采用循环队列。
(9)循环队列的队首指针为front,队尾指针为rear,则队空的条件为 front == rear 。
(10)链队列LQ为空时,LQ->front->next= NULL 。
(11)设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为 O(n)。
(12)设长度为n的链队列用单循环链表表示,若只设尾指针,则出队操作的时间复杂度为 0(1)。
(13)在一个链队列中,若队首指针与队尾指针的值相同,则表示该队列为空。
数据结构-堆(优先队列)习题
数据结构-堆(优先队列)习题判断题1.任何最⼩堆的前序遍历结果是有序的(从⼩到⼤)。
T F2.任何最⼩堆中从根结点到任⼀叶结点路径上的所有结点是有序的(从⼩到⼤)。
F3.在有N个元素的最⼤堆中,随机访问任意键值的操作可以在O(logN)时间完成。
T F4.⼀棵有124个结点的完全⼆叉树,其叶结点个数是确定的。
F5.完全⼆叉树中,若⼀个结点没有左孩⼦,则它必是树叶。
F6.完全⼆叉树的存储结构通常采⽤顺序存储结构。
F选择题1.堆的形状是⼀棵:A.⼆叉搜索树B.满⼆叉树C.⾮⼆叉树D.完全⼆叉树2.创建⼀个初始堆,含有N个记录,其时间复杂度是:A.O(logN)B.O(N)C.O(NlogN)D.O(N2)3.哪种树,树中任何结点到根结点路径上的各结点值是有序的?A.⼆叉搜索树B.完全⼆叉树C.堆D.以上都不是4.将6、4、3、5、8、9顺序插⼊初始为空的最⼤堆(⼤根堆)中,那么插⼊完成后堆顶的元素为:A.3B.5C.6D.95.下列的序列中,哪⼀组是堆?A.37,99,45,33,66,10,22,13B.99,45,66,13,37,10,22,33C.99,66,45,33,37,10,22,13D.99,66,22,33,37,13,45,106.已知关键字序列(5,8,12,19,28,20,15,22)是最⼩堆(⼩根堆),插⼊关键字3,调整后得到的最⼩堆是:,5,12,8,28,20,15,22,19,5,12,19,20,15,22,8,28C.3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,197.将10、12、1、14、6、5、8、15、3、9、7逐个按顺序插⼊到初始为空的最⼩堆(⼩根堆)中,然后连续执⾏两次删除最⼩元素操作(DeleteMin),此后堆顶的元素是什么?C.7D.9堆的删除要注意需要把堆尾元素替换掉堆的根结点,然后下滤。
8.将 {28, 15, 42, 18, 22, 5, 40} 逐个按顺序插⼊到初始为空的最⼩堆(⼩根堆)中。
数据结构第3章 栈与队列习题
第3章栈与队列一、单项选择题1.元素A、B、C、D依次进顺序栈后,栈顶元素是,栈底元素是。
A.A B.BC.C D.D2.经过以下栈运算后,x的值是。
InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x);A.a B.bC.1 D.03.已知一个栈的进栈序列是ABC,出栈序列为CBA,经过的栈操作是。
A.push,pop,push,pop,push,pop B.push,push,push,pop,pop,pop C.push,push,pop,pop,push,pop D.push,pop,push,push,pop,pop 4.设一个栈的输入序列为A、B、C、D,则借助一个栈所得到的序列是。
A.A,B,C,D B.D,C,B,AC.A,C,D,B D.D,A,B,C5.一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是。
A.edcba B.decbaC.dceab D.abcde6.已知一个栈的进栈序列是1,2,3,……,n,其输出序列的第一个元素是i,则第j个出栈元素是。
A.i B.n-iC.j-i+1 D.不确定7.已知一个栈的进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,Pn,若p1=n,则pi的值。
A.i B.n-iC.n-i+1 D.不确定8.设n个元素进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,pn,若p1=3,则p2的值。
A.一定是2 B.一定是1 C.不可能是1 D.以上都不对9.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p3=1,则p1的值。
A.可能是2 B.一定是1 C.不可能是2 D.不可能是310.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p 3=3,则p1的值。
A.可能是2 B.一定是2 C.不可能是1 D.一定是111.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p n =1,则pi(1≤i≤n-1)的值。
数据结构习题2
dequeue(q,y);printf(y);//龚注:printf(“%c”,y); } printf(x);//龚注:printf(“%c”,x); } 15. 有如下递归函数:【**】 int dunno(int m){ int value; if(m==0)
【**,★】(a1一定是最后出的)
A、a3,a1,a4,a2
B、 a3,a2,a4,a1
C、 a3,a4,a2,a1
D、 a4,a3,a2,a1
2/10 北京理工大学珠海学院计算机学院 “数据结构”课程组编制 2011-3-1
数据结构课后练习题
第 3 章 栈和队列
图3.1
21. 链栈和顺序栈相比,有一个比较明显的优势是( A )【*】
三、 填空题
1. 1、2、3、4 顺序入栈,则出入栈的序列共有( 14 )种。【***,★】
2. 栈的特点是( 后进先出 ),队列的特点是( 先进先出 )。【*】
3. 线性表、栈、队列都是( 线性 )结构,可以在线性表的( 任意 )位置插入和删除元素;对于栈只能在
( 栈顶 )插入和删除元素;对于队列只能在( 队尾 )插入元素和在( 队首)位置删除元素。【*,
的顺序是( C )。【***,★,考研 2010】
A. bacde
B. dbace
C. dbcae
D. ecbad
25. 已知输入序列为 abcd,经过输出受限的双端队列后能得到的输出序列是( B )。【***,联考】
A. dacb
B. cadb
C. dbca
D. 以上序列都不能得到
26. 栈和队列具有相同的( B )。【**,★,联考】
计算机学科专业基础综合数据结构-栈、队列和数组(一)
计算机学科专业基础综合数据结构-栈、队列和数组(一)(总分:92.00,做题时间:90分钟)一、单项选择题(总题数:26,分数:52.00)1.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是 ____ 。
(分数:2.00)A.不确定B.n-i+1 √C..iD.n-i解析:按照堆栈“后进先出”的特点,n是最后一个入栈的,即n为栈顶元素。
若输出的第一个元素为n,则其余所有元素必定仍在堆栈中。
第一个输出元素为n,则第二个输出元素为n-1,第i个输出元素为n-i+1,最后一个(第n个)输出元素为1。
2.有六个元素6,5,4,3,2,1的顺序进栈,下列 ____ 不是合法的出栈序列。
(分数:2.00)A.5 4 3 6 1 2B.4 5 3 1 2 6C.3 4 6 5 2 1 √D.2 3 4 1 5 6解析:考查堆栈“后进先出”的特点。
对选项A来说,第一个出栈元素是5,因为6先于5进栈,所以必定在5之后出栈,其余的元素出栈顺序任意;对选项B来说,第一个出栈元素是4,所以5和6两个元素必定在4之后依次出栈;对选项C来说,第一个出栈元素是3,则必有4、5、6三个元素依次在3后面出栈,但是选项C中的顺序是3、4、6、5,这是不符合要求的;对选项D来说,第一个出栈元素是2,则必有3、4、5、6依次在2后面出栈,D也是符合要求的,因此答案选C。
总结:这种问题如何解决呢?我们看第一个出栈元素,然后确定先于第一个元素进栈的所有其他元素,这些元素一定在第一个出栈元素之后顺序出栈。
如果第一个元素仍然无法判断出来,可继续看后面的元素,依次类推。
举例如下:假设第一个出栈的元素是1,则出栈顺序一定是6、5、4、3、2、1,没有其他情况。
假设第一个出栈的元素是2,则出栈顺序可能有:213456;231456;234156;234516‘; 234561(可首先把23456写出,然后可将1插到2之后的任意位置)假设第一个出栈的元素是3,则出栈顺序可能有:3 12 456;34 12 56; 345 12 6; 3456 12但是314526是不能的。
数据结构题目
数据结构题目一、引言在计算机科学与信息技术领域中,数据结构是一种用于组织和存储数据的方法。
它是构建各种算法和程序的基础,能够提高数据的操作效率和存储效率。
本文将介绍几个与数据结构相关的题目,通过解决这些题目,我们可以更好地理解和应用数据结构。
二、栈和队列题目1. 括号匹配问题给定一个字符串,其中包含括号('('和')'),请编写一个算法来判断字符串中的括号是否匹配。
例如,对于字符串"(())",算法应返回true。
而对于字符串"())(",算法应返回false。
2. 循环队列实现使用数组实现一个循环队列,并提供入队和出队的操作。
循环队列的特点是:当队满时,新元素会循环覆盖队头元素。
请设计一个算法来解决这个问题。
三、链表题目1. 反转链表给定一个单链表的头节点,请编写一个算法来反转链表。
例如,对于链表1->2->3->4->5,算法应返回链表5->4->3->2->1。
2. 链表的环检测给定一个链表,判断链表中是否存在环。
如果存在环,则返回true;否则返回false。
要求算法的空间复杂度为O(1)。
四、二叉树题目1. 二叉树的前序遍历给定一个二叉树的根节点,请编写一个算法来实现二叉树的前序遍历。
前序遍历的顺序是:根节点 -> 左子树 -> 右子树。
例如,对于二叉树的根节点A,前序遍历的结果为A->B->D->E->C->F。
2. 二叉树的最大深度给定一个二叉树的根节点,请编写一个算法来计算二叉树的最大深度。
二叉树的最大深度是从根节点到最远叶子节点的路径上的节点数。
例如,对于二叉树的根节点A,最大深度为3。
五、图论题目1. 无向图的连通性给定一个无向图,请编写一个算法来判断图中是否存在路径连接两个给定的节点。
例如,对于无向图中的节点A、B、C,如果存在路径A->B和B->C,则返回true;否则返回false。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选择题
1. 用链接方式存储的队列,在进行删除运算时()。
A. 仅修改头指针
B. 仅修改尾指针
C. 头、尾指针都要修改
D. 头、尾指针
可能都要修改
2. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结
点,则在进行删除操作时( )。
A.仅修改队头指针 B. 仅修改队尾指针
C. 队头、队尾指针都要修改
D. 队头,队尾指针都可能要修改
3. 递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。
A.队列 B.多维数组 C.栈 D. 线性表
4. 假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中
的元素个数为()。
A.(rear-front+m)%m B.rear-front+1 C.(front-rear+m)%m
D.(rear-front)%m
5. 循环队列存储在数组A[0..m]中,则入队时的操作为()。
A. rear=rear+1
B. rear=(rear+1) mod (m-1)
C. rear=(rear+1) mod m
D. rear=(rear+1)mod(m+1)
6. 若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当
从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( )
A. 1和 5
B. 2和4
C. 4和2
D. 5和1
7.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。
A. (rear+1) MOD n=front
B. rear=front
C.rear+1=front D. (rear-l) MOD n=front
8. 栈和队列的共同点是()。
A. 都是先进先出
B. 都是先进后出
C. 只允许在端点处插入和删除元素
D. 没有共同点
9. 栈和队都是()
A.顺序存储的线性结构 B. 链式存储的非线性结构
C. 限制存取点的线性结构
D. 限制存取点的非线性结构
10. 用单链表表示的链式队列的队头在链表的()位置。
A.链头 B.链尾 C.链中
11. 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个
元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少
应该是( )。
A. 6 B. 4 C. 3 D. 2
12. 循环队列的引入,目的是为了克服__假溢出_____。