栈和队列习题

合集下载

栈和队列习题

栈和队列习题

栈和队列习题4.1 判断题(在你认为正确的题后的括号中打√,否则打X)。

(1)堆栈和队列都是特殊的线性表。

( )(2)堆栈和队列都将插入和删除操作限制在表的端点处进行。

( )(3)只允许在表的一端进行插入和删除操作的线性表称为堆栈。

( )(4)没有元素的堆栈称为空栈,空栈用不着栈顶指针。

( )(5)只要堆栈不空,就能任意删除堆栈的元素。

( )(6)堆栈允许删除的一端称为栈顶,而栈底元素是不能删除的。

( )(7)n个元素进栈的顺序一定与它们出栈的顺序相反。

( )(8)对采用链式存储结构的堆栈进行操作不必判断溢出。

( )(9)给出顺序堆栈的栈顶元素位置的指针是一个指针类型的变量。

( )(10)判断顺序堆栈是否为空的标志是top是否等于0(top为栈顶指针)。

( )(11)插入和删除操作比较简单是链接堆栈和链接队列的优点之一。

( )(12)n个元素进队的顺序与它们出队的顺序一定是相同的。

( )(13)没有任何元素的队列称为空队。

空队用不着队头指针与队尾指针。

( )(14)元素进出队列一定满足“先进先出”的规律。

( )(15)链接队列不存在溢出问题。

( )(16)在链接队列中删除一个元素是在链表的最前端进行的。

( )(17)采用循环链表作为存储结构的队列称为循环队列。

( )(18)堆栈和队列都可以用来解决递归问题。

( )(19)堆栈和队列都不适合采用散列存储方法。

( )(20)无论是顺序队列还是链接队列,插入、删除操作的时间复杂度都是O(1)。

( )4.2单项选择题。

(1)堆栈和队列的共同之处在于它们具有相同的——。

A.逻辑特性B.物理特性C.运算方法D.元素类型(2)堆栈和队列都是特殊的线性表,其特殊性在于_______。

A.它们具有一般线性表所没有的逻辑特性B.它们的存储结构比较特殊C.对它们的使用方法做了限制D.它们比一般线性表更简单(3)若5个元素的出栈序列为1,2,3,4,5,则进栈序列可能是——。

数据结构栈和队列习题及答案

数据结构栈和队列习题及答案

习题三栈和队列一单项选择题1. 在作进栈运算时,应先判别栈是否(① ),在作退栈运算时应先判别栈是否(② )。

当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③ )。

①, ②: A. 空 B. 满 C. 上溢 D. 下溢③: A. n-1 B. n C. n+1 D. 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. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 64.设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4, s6, s5,s1,则栈的容量至少应该是()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值为:()int f(int x){ return ((x>0) ? x* f(x-1):2);}int i ;i =f(f(1));A.2 B. 4 C. 8 D. 无限递归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. 用链接方式存储的队列,在进行删除运算时()。

栈和队列_习题

栈和队列_习题

第三章栈和队列一、单项选择题1.当利用大小为N的数组顺序存储一个栈时,假定用top=N表示栈空,则向这个栈入栈时,首先应执行( )语句修改top指针。

A. top++B. top--C. top=0D. top=N-12.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,top= -1表示栈空,并已知栈未满,当元素X入栈时执行的操作为( )。

A. a[--top]=XB. a[top--]=XC. a[++top]=XD. a[top++]=X3.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,top=-1表示栈空,并已知栈未空,当退栈并返回栈顶元素执行的操作为( )。

A. return a[--top]B. return a[top--]C. return a[++top]D. return a[top++]4.假定一个链栈的栈顶指针用top表示,每个节点的结构为data域和next指针域,当p所指向的结点进栈时,执行的操作为()A. p->next=top;top=top->nextB. top=p;p->next=topC. p->next=top->nextD. p->next=top;top=p5.假定一个链栈的栈顶指针用top表示,每个节点的结构为data域和next指针域,当执行退栈时,执行的操作为()A. top->next=topB. top=top->dataC. top=top->nextD. top->next=top->next->next6.若让元素1,2,3,4依次进栈,则出栈次序不可能出现( )种情况。

A.3,2,1,4B.2,1,4,3C.4,3,2,1D.1,4,2,37. 在一个循环队列中,队首指针指向队首元素的( )位置。

A. 前一个B. 后一个C. 当前D. 最后7. 在一个链队中,假设f与r分别为队首和队尾指针,则插入s所指结点的运算时( )A.f->next=s;f=sB.r->next=s;r=sC.s->next=r;r=sD.s->next=f;f=s8. 假定利用数组a[N]循环顺序存储一个队列,用f和r分别表示队首和队尾指针,并已知队未满,当元素X入队时执行的操作为( )。

栈和队列习题

栈和队列习题

第三章栈和队列练习题一、单项选择题1.一个顺序栈一旦被声明,其占用空间的大小()。

A.已固定B.可以改变C.不能固定D.动态变化2.链栈和顺序栈相比,有一个比较明显的缺点,即()。

A.插入操作更加方便B.通常不会出现栈满的情况C.不会出现栈空的情况D.删除操作更加方便3.用单链表表示的链式队列的队头在链表的()位置。

A.链头B.链尾C.链中D.任意位置4.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入缓冲区中,而打印机则从缓冲区中取出数据打印,该缓冲区应该是一个()结构。

A.堆栈B.队列C.数组D.先性表5.若已知一个栈的入栈序列是1,2,3,…,30,其输出序列是p1,p2,p3,…p n,若p1=30,则p10为()。

A.11 B.20 C.19 D.216.循环队列A[m] 存放其元素,用front和rear分别表示队头及队尾,则循环队列满的条件是()。

A.(rear+1)%m=front B.rear =front+1C.rear=front D.(rear+1)%m-1=front7.在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行()。

A.top->next=p; B.p->next=top->next; top->next=p;C.p->next=top; top=p; D.p->next=top->next; top=top->next;8.在一个栈顶指针为top的链栈中删除一个结点时,用x保存被删结点的值,则执行()。

A.x=top;top=top->next; B.x=top->data;C.top=top->next; x=top->data; D.x=top->data; top=top->next;9.表达式a*(b+c)-d的后缀表达式是()。

数据结构习题精编:栈和队列-数据结构栈和队列考题

数据结构习题精编:栈和队列-数据结构栈和队列考题
C.(rear-front)%m= =m-1D.front= =(rear+1)%m
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. 对于栈操作数据的原则是(B )。

A. 先进先出 B.后进先出 C.后进后出D.不分顺序2.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是( B )。

A.不确定B.n-i+1 C.i D.n-i3. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是(D )。

A.i-j-1 B.i-j C.j-i+1 D.不确定的4. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pN,若pN是n,则pi是( D )。

A. i B.n-i C.n-i+1 D. 不确定5. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?(C )。

A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 66. 设栈的输入序列是1,2,3,4,则(D )不可能是其出栈序列。

A. 1,2,4,3,B. 2,1,3,4,C. 1,4,3,2,D. 4,3,1,2,E. 3,2,1,4,7. 设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是( C )。

A.XYZ B. YZX C. ZXY D. ZYX8. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时( D )。

A.仅修改队头指针 B. 仅修改队尾指针 C. 队头、队尾指针都要修改 D. 队头,队尾指针都可能要修改9. 递归过程或函数调用时,处理参数及返回地址,要用一种称为(C )的数据结构。

A.队列 B.多维数组C.栈 D. 线性表1. 消除递归不一定需要使用栈,此说法(√ )2. 栈是实现过程和函数等子程序所必需的结构。

(√ )3. 两个栈共用静态存储空间,对头使用也存在空间溢出问题。

(√ )4.两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。

第三章,栈和队列,练习题

第三章,栈和队列,练习题

第三章,栈和队列,练习题一、选择题1、栈结构通常采用的两种存储结构是。

A、顺序存储结构和链表存储结构B、散列和索引C、链表存储结构和数组D、线性链表和非线性存储2、设栈ST用顺序存储结构表示,则栈ST为空的条件是A、ST.top-ST.base0B、ST.top-ST.base==0C、ST.top-ST.basenD、ST.top-ST.base==n3、向一个栈顶指针为HS的链栈中插入一个s结点时,则执行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保存被删除结点的值,则执行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;7、一个队列的入列序列是1,2,3,4,则队列的输出序列是//尾插入元素,头删除元素。

A、4,3,2,1B、1,2,3,C、1,4,3,D、3,2,4,19、循环队列SQ采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front和rear,则判定此循环队列为满的条件是//不懂啊!!!A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==%nD、Q.front!=%n11、用单链表表示的链式队列的队头在链表的位置A、链头B、链尾C、链中12、判定一个链队列Q为空的条件是A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==%nD、Q.front!=%n14、在一个链队列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.栈的特点是(),队列的特点是().A.先进先出B.先进后出2.栈和队列的共同点是().A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点3.一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是().A.edcbaB.decbaC.dceabD.abcde4.若已知一个栈的进栈序列是1,2,3,……,n,其输出序列为p1,p2,p3,……,p n。

若p1=n,则p i(1≤i<n)为().< p="">A.iB.n=iC.n-i+1D.不确定5.若已知一个栈的进栈序列是1,2,3,……,n,其输出序列为p1,p2,p3,……,p n。

若p n=n,则p i(1≤i<n)为().< p="">A.iB.n=iC.n-i+1D.不确定6.若已知一个栈的进栈序列是1,2,3,……,n,其输出序列为p1,p2,p3,……,p n。

若p1=3,则p2为().A.可能是2B.不可能是2C.可能是1D.一定是17. 若已知一个栈的进栈序列是p1,p2,p3,……,p n,其输出序列为1,2,3,……,n。

若p3=1,则p1为().A.可能是2B.一定是2C.不可能是2D.不可能是38.若已知一个栈的进栈序列是p1,p2,p3,……,p n,其输出序列为1,2,3,……,n。

若p n=1,则p i(1≤i<n)为()< p="">A.iB.n=iC.n-i+1D.不确定9.一个队列的入队序列是1,2,3,4,则队列的输出序列是().A.4,3,2,1B.1,2,3,4C.1,4,3,2D.3,2,4,110.判定一个队列Q为空的条件为().A.Q->rear-Q->front==MaxSizeB.Q->rear-Q->front-1==MaxSizeC.Q->front== Q->rearD.Q->front== Q->rear+111. 判定一个队列Q为满的条件为().A.Q->rear-Q->front==MaxSizeB.Q->rear-Q->front-1==MaxSizeC.Q->front== Q->rearD.Q->front== Q->rear+112.循环队列中是否可以插入下一个元素,().A.与队头指针和队尾指针的值有关B.只与队尾指针的值有关C.只与数组的大小有关,与队尾和队头指针的值无关D.与曾经进行过多少次插入操作有关13.判定一个循环队列Q为空的条件().A.Q->front==Q->rearB. Q->front!=Q->rearC. Q->front==(Q->rear+1)%MaxSizeD. Q->front!=(Q->rear+1)%MaxSize14. 判定一个循环队列Q为满的条件().A.Q->front==Q->rearB. Q->front!=Q->rearC. Q->front==(Q->rear+1)%MaxSizeD. Q->front!=(Q->rear+1)%MaxSize15.在一个链表中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算时().A.f->next=s;f=s;B.r->next=s;r=s;C.s->next=r;r=s;D.s->next=f;f=s;16. 在一个链表中,假设f和r分别为队头和队尾指针,则删除一个结点的运算时().A. r=f->next;B. r=r->next;C. f=f->next;D. f= r->next;17.跟踪以下代码,显示每次调用后栈中的内容。

《数据结构》习题汇编03第三章栈和队列试题

《数据结构》习题汇编03第三章栈和队列试题

第三章栈和队列试题一、单项选择题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是指向栈顶的指针。

栈和队列练习

栈和队列练习

栈和队列一、选择题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、5、一个栈的输入序列为: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、表达式a*(b+c)-d的后缀表达式是( B )。

A. abcd+-B. abc+*d-C. abc*+d-D. -+*abcd11、将递归算法转换成对应的非递归算法时,通常需要使用( B )来保存中间结果。

数据结构第3章 栈与队列习题

数据结构第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,popC.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,…,p n,若p1=3,则p2的值。

A.一定是2 B.一定是1C.不可能是1 D.以上都不对9.设n个元素进栈序列是p1,p2,…,p n,其输出序列是1,2,3,……,n,若p3=1,则p1的值。

A.可能是2 B.一定是1C.不可能是2 D.不可能是310.设n个元素进栈序列是p1,p2,…,p n,其输出序列是1,2,3,……,n,若p3=3,则p1的值。

A.可能是2 B.一定是2C.不可能是1 D.一定是111.设n个元素进栈序列是p1,p2,…,p n,其输出序列是1,2,3,……,n,若p n=1,则p i(1≤i≤n-1)的值。

Lesson4_栈和队列(习题)

Lesson4_栈和队列(习题)
队列 .设数组 作为循环队列SQ的存储空间,fr 的存储空间, 作为循环队列 的存储空间 ont为队头指针,rear为队尾指针, 为队头指针, 为队尾指针, 为队头指针 为队尾指针 则执行出队运算后其头指针front值为 )。 值为( 。 则执行出队运算后其头指针 值为
7. 用不带头结点的单链表存储队列,其队头指针指 . 用不带头结点的单链表存储队列, 向队头结点,队尾指标指向队尾结点, 向队头结点,队尾指标指向队尾结点,则在进行出队 运算时( )。 运算时 。 A.仅修改队头指针 B.仅修改队尾指针 仅修改队头指针 仅修改队尾指针 C.对头、队尾指针都要修改 对头、 D.对头、对尾指 对头、 对头 对头 针都可能要修改 8.若进栈序列为 ,b,c,则通过入出栈运算可能得 若进栈序列为a, , , 若进栈序列为 到的a,b,c的不同排列个数为 )。 到的 , , 的不同排列个数为( 。 的不同排列个数为 A.4 B.5 C.6 D.7
5.一个队列的入列序列是1,2,3,4,则队列的 .一个队列的入列序列是 , , , , 输出序列是( 。 输出序列是 )。 A.4,3,2,1 , , , B.1,2,3,4 . , , , C.1,4,3,2 D.3,2,4,1 . , , , . , , , 6.若在一个大小为 的数组上实现循环队列,且当前 若在一个大小为6的数组上实现循环队列 若在一个大小为 的数组上实现循环队列, rear和front的值分别为 和3,当从队列中删除一 的值分别为0和 , 和 的值分别为 个元素,再加入两个元素后, 个元素,再加入两个元素后,rear和front的值分别 和 的值分别 为( )。 。 A.1和5 B.2和4 C.4和2 D.5和l 和 和 和 和
从供选择的答案中,选出应填入下面叙述 从供选择的答案中, 把相应编号写在答卷的对应栏内。 把相应编号写在答卷的对应栏内。

数据结构(栈和队列)习题与答案

数据结构(栈和队列)习题与答案

一、单选题1、元素A、B、C、D依次进栈后,栈顶元素是 _______。

A.BB.DC.CD.A正确答案:B2、经过以下运算后, x的值是 _______。

InitStack (s); Push(s, a); Push(s, b); Pop(s, x); GetTop(s,x)A.0B.bC.aD.1正确答案:C3、经过以下栈运算后,StackEmpty(s)的值是 _______。

InitStack (s); Push(s, a); Push(s, b); Pop(s, x); Pop(s,y)A.0B.bC.aD.1正确答案:D4、已知一个栈的进栈序列是ABC,出栈序列为CBA,经过栈的操作是 _______。

A.push, push, push, pop, pop, popB.push,pop,push, push,pop, popC.push, push,pop, pop,push,popD.push,pop,push,pop,push,pop正确答案:A5、若元素a、b、c、d、e、f依次进栈,允许进栈、退栈的操作交替进行,但不允许连续3次退栈工作,则不可能得到的出栈序列是 _______。

A. bcaefdB.afedcbC.cbdaefD.dcebfa正确答案:B6、设一个栈的输入序列为A、B、C、D,则借助一个栈所得的输出序列不可能是_______。

A.DCBAB.DABCC.ACDBD.ABCD正确答案:B7、一个栈的进栈序列是abcde,则栈的不可能的输出序列是 _______。

A.decbaB.abcdeC.dceabD.edcba正确答案:C8、已知一个栈的进栈序列是1,2,3,…n,其输出序列的第一个元素是i(1≤i≤n),则第j(1≤j≤n)个出栈元素是_______。

A.n-iB.j-i+1C.iD.不确定正确答案:D9、已知一个栈的进栈序列是1,2,3,…n,其输出序列是p1,p2,…pn,若p1=n,则pi的值是_______。

数据结构第3章 栈与队列习题

数据结构第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)的值。

栈和队列习题集【精选】

栈和队列习题集【精选】

栈和队列部分习题一、单项选择题1.栈的插入和删除操作在______进行。

A、栈顶B、栈底C、任意位置D、指定位置2.在栈中存取数据的原则是______。

A、先进先出B、后进先出C、后进后出D、随意进出3.当利用大小为N的数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行______语句修改top指针。

A、top++;B、top--;C、top=0;D、top=N-1;4.判断一个由ST指向的栈(最多元素m0)为满的条件是______。

A、ST->top !=0B、ST->top= =0C、ST->top!=m0D、ST->top = =m0-15.对于顺序栈stack[0..m],假设栈底在stack[0]处,并用top指向栈顶元素之后的空位置,则判断栈空的条件是______。

A、top= = -1B、top= =0C、top= =1D、top==n-16.假定利用数组a[N+1]顺序存储一个栈,用top表示栈顶指针,用top=N+1表示栈空,该数组所存储的栈的最大长度为N,则表示栈满的条件为______。

A、top==1B、top==-1C、top=0D、top=N-17.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,用top==-1表示栈空,并已知栈未满,当元素x进栈时所执行的操作为______。

A、a[--top]=x;B、a[top--]=x;C、a[++top]=x;D、a[top++]=x;8.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,用top==-1表示栈空,并已知栈未空,当退栈并返回栈顶元素时所执行的操作为______。

A、return a[--top];B、return a[top--];C、return a[++top];D、return a[top++];9.假定一个链式栈的栈顶指针用top表示,该链式栈为空的条件______。

栈与队列习题参考附标准答案

栈与队列习题参考附标准答案

习题三参考答案备注: 红色字体标明的是与书本内容有改动的内容。

一、选择题1.在栈中存取数据的原则是( B )。

A.先进先出 B. 先进后出C. 后进后出D. 没有限制2.若将整数1、2、3、4依次进栈,则不可能得到的出栈序列是( D )。

A.1234 B. 1324 C. 4321 D. 14233.在链栈中,进行出栈操作时(B )。

A.需要判断栈是否满 B. 需要判断栈是否为空C. 需要判断栈元素的类型D. 无需对栈作任何差别4.在顺序栈中,若栈顶指针top指向栈顶元素的下一个存储单元,且顺序栈的最大容量是maxSize,则顺序栈的判空条件是( A )。

A.top==0 B.top==-1 C. top==maxSize D.top==maxSize-15.在顺序栈中,若栈顶指针top指向栈顶元素的下一个存储单元,且顺序栈的最大容量是maxSize。

则顺序栈的判满的条件是( C )。

A.top==0 B.top==-1 C. top==maxSize D.top==maxSize-16.在队列中存取数据元素的原则是( A )。

A.先进先出 B. 先进后出C. 后进后出D. 没有限制7.在循环顺序队列中,假设以少用一个存储单元的方法来区分队列判满和判空的条件,front 和rear分别为队首和队尾指针,它们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxSize,则队列的判空条件是(A )。

A.front==rear B. front!=rearC. front==rear+1D. front==(rear+1)% maxSize8.在循环顺序队列中,假设以少用一个存储单元的方法来区分队列判满和判空的条件,front 和rear分别为队首和队尾指针,它们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxSize,则队列的判满条件是(D )。

A.front==rear B. front!=rearC. front==rear+1D. front==(rear+1)% maxSize9.在循环顺序队列中,假设以少用一个存储单元的方法来区分队列判满和判空的条件,front和rear分别为队首和队尾指针,它们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxSize,则队列的长度是(C )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• • • • • • • • • • • • • • • • •
6、对于一个栈,给定输入序列为1,2,3,则下列不可能为输出序列的是 ( ) A.1,2,3 B.3,2,1 C.3,1,2 D.2,1,3 7、在链接队列执行入队操作( ) A.需判别队是否空 B.需判别队是否满 C.限制在链表头p进行 D.限制在链表尾p进行 8、以下不属于栈的基本运算是( )。 A.删除栈顶元素 B.删除栈底元素 C.判断栈是否为空 D.将栈置为空栈 9、一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( )。 A.e,d,c,b,a B.d,e,c,b,a C.d,c,e,a,b D.a,b,c,d,e 10、设计一个判别表达式中左、右括号是否配对出现的算法,采用( )数 据结构最佳。 A.线性表的顺序存储结构 B.栈 C.队列 D.线性表的链式存储结构 11、循环队列的特点之一是不会产生( )。 A.上溢出 B.下溢出 C.队满 D.假溢出 12、设数组Data[n]作为循环队列Q的存储空间,front为队头指针,rear为队
ቤተ መጻሕፍቲ ባይዱ
20、在一个链队列中,若f,r分别为队首、队尾指针,则插入s 所指结点的操作为( )。 A.f->next=s;f=s B.r->next=s;r=s; C.s->next=r;r=s; D.s->next=f;f=s 21、循环队列的入队操作应为( )。 A.q->rear=q->rear+1;q->data[q->rear]=x; B.q->data[q->rear++]=x; C.q->rear=(q->rear+1)%maxsize;q->data[q->rear]=x; D.q->data[q->rear]=x;q->rear=(q->rear+1)%maxsize; 22、栈和队列都是( )。 A.限制存取点的线性结构 B.限制存取 点的非线性结构 C.顺序存储的线性结构 D.链式存储的线性 结构 23、实现递归调用属于( )的应用。 A.队列 B.栈 C. 数 D.树
• • • • • • • • • •
判断题: 1、循环队列中无上溢现象。 ( ) 2、循环队列只有下溢,没有上溢。 ( ) 3、对顺序栈而言,在栈满状态,如果此时再作进栈运算,则会发生“下 溢”。 ( ) 4、顺序队列和循环队列的队满和队空的条件是一样的。 ( ) 5、为解决队列“假满”问题,可以采用循环数组实现队列存储。 ( ) 6、队列是后进先出表。 ( ) 7、栈是后进先出表。 ( ) 四、应用题: 设有一个栈,元素进栈的次序为A,B,C,D,E,写出下列出栈序列的 操作序列。(1)CBADE(2)ACBED,其中I为进栈操作,O为出栈操 作。
栈和队列
• • • • • • • • • • • • • • • • 一、选择题 1、循环队列是空队列的条件是( ) A.Q - > rear = = Q - > front B.(Q - > rear + 1)%maxsize = = Q - > front C.Q - > rear = = 0 D.Q - > front = = 0 2、链栈与顺序栈相比,比较明显的优点是( ) A.插入操作更加方便 B.删除操作更加方便 C.不会出现下溢的情况 D.不会出现上溢的情况 3、若一个栈的输入序列是1,2,3,……,n,输出序列的第一个元素是n, 则第i个输出元素是( ) A.n - i B.n – i + 1 C.i D.不确定 4、栈与一般线性表的区别主要在( ) A.元素个数 B.元素类型 C.逻辑结构 D.插入、删除元素的位置 5、一个链栈的栈顶指针是top,则执行出栈操作时(栈非空),用x保存被删除结 点,则执行( ) A.x = top;top = top - > next; B.x = top - > data; C.top = top - > next;x = top - > data; D.x = top - > data;top = top - > next;
• • • • • • • • • • •
二、填空题: 1、循环队列用数组data[m]存放其元素值,已知其头、尾指针分别是front和 rear,则当前队列中元素的个数是( )。 2、栈顶的位置是随着( )操作而变化的。 3、假设以S和X分别表示进栈和退栈操作,则对输入序列a,b,c,d,e进行 一系列栈操作SSXSXSSXXX之后,得到的输出序列为( )。 4、队列的队尾位置随着( )而变化。 5、在( )的情况下,链队列的出队操作需要修改尾指针。 6、从栈顶指针为top的链栈中删除一个结点,并将被删除的结点的值保存在x 中,其操作步骤为( );top=top->next;。 7、用数组A[m]来存放循环队列q的元素,且它的头、尾指针分别为front和 rear,队列满足条件(q.rear+1)%m==q.front,则队列中当前的元素个数为 ( )。 8、顺序栈s存储在数组s->data[max]中,对s进行出栈操作,执行的语句序列 是( )。 9、以下运算实现在循环队列中的初始化操作 void initqueue(seqqueue *q){q->front=0;( );}
• 2、如果编号为1、2、3的三辆列车进入一 个栈式结构的站台,那么可能得到的三辆 列车出站序列有哪些?不可能出现的序列 是什么? • 五、程序设计题: • 1、写出循环队列入队操作的函数。
• • • • • • • • • • • • • • • • • • •
A.rear=(rear+1)%(n+1) B.front=(front+1)% n C.rear=(rear+1)% n D.front=(front+1)%(n+1) 13、一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是( )。 A.5 4 3 2 1 B.4 5 3 2 1 C. 4 3 5 1 2 D.1 2 3 4 5 14、栈是限定在( )处进行插入或删除操作的线性表。 A.端点 B.栈底 C.栈顶 D.中间 15、容量是10的循环队列的队头位置q->front为2,则队的第一个数据元素的位置是( ) A.2 B.3 C.1 D.0 16、循环队列的出队操作是( ) A. q->front=(q->front+1)%maxsize; B.q->front=q->front+1; C.q->rear=(q->rear+1)%maxsize; D.q->rear=q->rear+1; 17、当循环队列q是满队列时,存放队列元素的数组data有n个元素,则data中存放 ( )个数据元素。 A.n B.n-1 C.n-2 D.0 18、以下哪一个不是队列的基本运算( )。 A.从队尾插入一个新元素 B.从队列中删除第i个元素 C.判断一个队列是否为空 D.读取队头元素的值 19、从栈顶指针为top的链栈中删除一个结点,并将被删除结点的值保存到x中,其操 作步骤为( )。 A.x=top->data;top=top->next B.top=top->next;x=top>data; C.x=top;top=top->next D.x=top->data;
相关文档
最新文档