栈、队列_习题
栈和队列习题
栈和队列习题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,则进栈序列可能是——。
栈和队列习题
• • • • • • • • • • • • • • • • •
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.当利用大小为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入队时执行的操作为( )。
第四章栈和队列
}
if(k==1){
BS.top1++;
Bs.stack[BS.top1]=item;
}
else if(k==2){
BS.top1--;
ElemType peek(BothStack& BS,int k)
{
if(k==1){
if(BS.top1==-1){
cerr<<"Stack 1 is empty!"<<end1;
exit(1);
当向栈2插入元素时,则使top2减1才能够得到新的栈顶位置。当top1等于top2-1或者top2等
于top1+1时,存储空间用完,无法再向任一栈插入元素。用于双栈操作的顺序存储类型可定
义为:
struct Bothstack{
ElemType stack[stackMaxSize];
int top1,top2;
};
双栈操作的抽象数据类型可定义为:
DAT BSTACK is
Data:采用顺序结构存储的双栈,其存储类型为Bothstack
operations:
void InitStack(Bothstack& BS,int k);
2.在一个数组空间stack[StackMaxSize]中可以同时存放两个顺序栈,栈底分别在数组的两端
,当第一个栈的栈顶指针top1等于-1时则栈1为空,当第二个栈的栈顶指针top2等于StackMax
Size时栈2为空。两个栈均向中间增长,当向栈1插入元素时,使top1增1得到新的栈顶位置,
BS.stack[BS.top2]=item;
数据结构习题第3章
第3章栈和队列一、选择题1. 栈中元素的进出原则是( )A.先进先出B.后进先出C.栈空则进D.栈满则出2. 已知一个栈的进栈序列为1, 2, …, n,其输出序列是p1, p2, … , p n ,若p1=n,则p i=()A. iB. n-iC. n-i+1D.不确定3. 一个栈的输入序列为:a b c d e,则下列不可能是栈的输出序列的是()。
A. b c d a eB. e d a c bC. b c a d eD. a e d c b4. 判定一个栈ST(最多元素为m0)为空的条件是( )A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m0 5. 判定一个队列QU(最多元素为m0)为满队列的条件是( )A.QU->rear -QU->front = = m0 B.QU->rear -QU->front -1= = m0 C.QU->front = = QU->rear D.QU->front = = QU->rear+16.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为( )A. r-fB.(n+f-r)% nC.n+r-fD.(n+r-f)% n7. 栈和队列的共同点是()。
A. 都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点8. 用单链表表示的链式队列的队头在链表的()位置。
A.表头B.表尾C.中间9. 设计一个判别表达式中左,右括号是否配对出现的算法,采用()结构最佳。
A.线性表的顺序存储结构 B. 队列C. 线性表的链式存储结构D. 栈10. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时( )。
栈和队列习题
第三章栈和队列练习题一、单项选择题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的后缀表达式是()。
栈和队列习题_数据结构
习题三栈和队列一单项选择题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,则栈的容量至少应该是()B. 3C. 55. 若栈采用顺序存储方式存储,现两栈共享空间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. 用链接方式存储的队列,在进行删除运算时()。
数据结构习题精编:栈和队列-数据结构栈和队列考题
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.栈和队列都是( A )。
A.限制存取位置的线性结构B.顺序存储的线性结构C.链式存储的线性结构D.限制存取位置的非线性结构2.队和栈的主要区别是(D )。
A.逻辑结构不同B.存储结构不同C.所包含的运算个数不同D.限定插入和删除的位置不同3.下列说法哪种是不正确的(C )。
A.栈是一种受限的线性结构B.栈是一种后进先出的线性结构C.栈可以是线性结构也可以是非线性结构D.栈可以用数组或链表来实现4.五节车厢以编号1,2,3,4,5顺序进入铁路调度站(栈),则可得到( C )编组。
A. 34512B. 24135C. 35421D. 135245.一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( B )。
A.2 3 4 1 5B. 5 4 1 3 2C. 2 3 1 4 5D. 1 5 4 3 26.设数组Data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为( D )。
A. front=front+1B. front=(front+1)%(m-1)C. front=(front-1)%mD. front=(front+1)%m7.设循环队列中数组的下标范围是 1——n,其头尾指针分别为f,r,则队列中的元素个数为( D)A.r-f B.r-f+1 C.(r-f+1)%n D.(r-f+n)%n1.设数组A[m]为循环队列Q的存储空间,front为头指针,rear为尾指针,判定Q为空队列的条件_____Qfront=Qrear_______________。
2.在初始为空的队列中插入元素A,B,C,D以后,紧接着作了两次删除操作,此时的队尾元素是__________D。
3. 当栈满时再做进栈运算将产生上溢;当栈空时再做出栈运算将产生下溢。
4. 在顺序队列中,为了克服假溢出现象的方法是将向量空间想象为一个首尾相接的圆环,并称这种向量为循环变量,存储在其中的队列为循环队列。
栈和队列习题及答案
栈和队列习题及答案第三章栈和队列⼀、选择题1、⼀个栈的输⼊序列为:a,b,c,d,e,则栈的不可能输出的序列是()。
A. a,b,c,d,eB. d,e,c,b,aC. d,c,e,a,bD. e,d,c,b,a2、判断⼀个循环队列Q(最多n个元素)为满的条件是()。
A. Q->rear==Q->frontB. Q->rear==Q->front+1C. Q->front==(Q->rear+1)%nD. Q->front==(Q->rear-1)%n3、设计⼀个判别表达式中括号是否配对的算法,采⽤()数据结构最佳。
A. 顺序表B. 链表C. 队列D. 栈4、带头结点的单链表head为空的判定条件是()。
A. head==NULLB. head->next==NULLC. head->next!=NULLD. head!=NULL5、⼀个栈的输⼊序列为:1,2,3,4,则栈的不可能输出的序列是()。
A. 1243B. 2134C. 1432D. 4312E. 32146、若⽤⼀个⼤⼩为6的数组来实现循环队列,且当rear和front的值分别为0,3。
当从队列中删除⼀个元素,再加⼊两个元素后,rear和front 的值分别为()。
A. 1和5B. 2和4C. 4和2D. 5和17、队列的插⼊操作是在()。
A. 队尾B. 队头C. 队列任意位置D. 队头元素后8、循环队列的队头和队尾指针分别为front和rear,则判断循环队列为空的条件是()。
A. front==rearB. front==0C. rear==0D. front=rear+19、⼀个顺序栈S,其栈顶指针为top,则将元素e⼊栈的操作是()。
A. *S->top=e;S->top++;B. S->top++;*S->top=e;C. *S->top=eD. S->top=e;10、表达式a*(b+c)-d的后缀表达式是()。
数据结构_栈和队列练习题
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、队头尾指针都可能要修改。
栈和队列-题库
的序列是 ,变量 T 的值是 。
供选择的答案:
A: ① 先进先出 ②后进先出 ③进优于出
④出优于进 ⑤ 随机进出
B,C: ① 加 1 ②减 1
③不变
④清 0 ⑤ 加 2
⑥减 2
D:① a,b ②b,c ③c,a
④b,a
⑤ c,b
⑥ a,c
E:① n+1 ②n+2 ③ n
④ n-1 ⑤ n-2
25.从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写在
a 带尾指针的非循环链表
b 带尾指针的循环链表
c 带头指针的非循环链表
d 带头指针的循环链表
37、 若用一个大小为 6 的数组来实现循环队列,且当 rear 和 front 的值分别为 0 和 3。
当从队列中删除一个元素,再加入两个元素后,rear 和 front 的值分别为多少?
A 1和5
B2和4 C 4和2 D5和1
33. 一个队列(数组仿真,最多元素为 MaxSize)下列哪个选项表示了队列空间全部被利 用?
A. rear – front == MaxSize
B. rear – front == MaxSize –1
C. rear == front
D. rear + 1 == front 34.判定一个循环队列(数组仿真,最多元素为 MaxSize)为空的条件是?
22.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素
的位置,假定队列中元素的个数小于n,计算队列中元素的公式为
(A)r-f; (B)(n+f-r)% n; (C)n+r-f;
(D)(n+r-f)% n
Lesson4_栈和队列(习题)
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.在一个具有n个单元的顺序栈中,假定以地址低端作为栈底,以top作为栈顶指针,则当做退栈处理时,top变化为。
A.top不变 B.top=top-n C.top=top-1 D.top=top+1 2.在一个顺序存储的循环队列中,队首指针指向队首元素的。
A.前一个位置 B.后一个位置 C.队首元素位置 D.队尾元素位置3.若进栈序列为1,2,3,4,栈过程中可以出栈,则不可能是一个出栈序列。
A.3,4,2,1 B.2,4,3,1 C.1,4,2,3 D.3,2,1,44.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队首指针和队尾指针,则判断队空的条件是。
A.front= =rear+1 B.front+1= =rear C.front= =rear D.front= =0 5.向一个栈项指针为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;6.下列说法哪个正确:_______A.堆栈是在两端操作、先进后出的线性表B.堆栈是在一端操作、先进先出的线性表C.队列是在一端操作、先进先出的线性表D.队列是在两端操作、先进先出的线性表7.栈和队列的共同点_______A.都是先进后出 B.都是先进先出C.只允许在端点处插入和删除元素 D.没有共同点8.以下数据结构中哪一个是非线性结构?_______A.队列 B.栈 C.线性表 D.二叉树9.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3 ,…,pn,若p1=n,则 pi 为_______A.i B.n=i C.n-i+1 D.不确定10.当利用大小为 N 的一维数组顺序存储一个栈时,假定用top==N 表示栈空,则向这个栈插入一个元素时,首先应执行_______语句修改top指针。
栈和队列
第三章栈和队列练习题一、单项选择题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的后缀表达式是()。
数据结构第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、有A B C三辆列车顺序进入栈式结构的站台,问这三辆车开出站台的序列有多少种,并写出具体序列。
2、某堆栈的输入序列是a、b、c、d,则下列序列中不可能是它的输出序列的是()A. a,c,b,dB. b,c,d,aC. c,d,b,aD. d,c,a,b3、一个栈的输入序列为123…n,若输出序列的第一个元素是n,则输出的第i个元素是()A. 不确定B. n-i+1C. iD. n-i4、输入序列为ABC,要变为CBA,经过的栈操作为()A. push,pop,push,pop,push,popB. push,push,push,pop,pop,popC. push,push,pop,pop,push,popD. push,pop,push,push,pop,pop5、一个栈的输入序列为123…n,若输出序列的第一个元素是i,则输出的第j个元素是()A. i-j-1B. i-jC. i-j+1D. 不确定6、在循环顺序队列中,假设以少用一个存储单元的方法来区分队列判满和判空的条件,front和rear分别为队首和队尾指针,他们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储量为maxSize,则队列的判满条件是()。
A.front=rear B.front=(rear-front+1)%maxSizeC.front=rear+1D.front=(rear+1)%maxSize基本知识栈的实现(初始化、出栈、入栈、取栈顶元素、判空)队列的实现(初始化、出队、入队、取队头元素、判空)循环队列编程题1、两个栈实现队列的功能。
2、图书馆里有没有某本书,现有6人排队,有3个人来借此书,3个人来还此书,且若到某人借书时,若无书,则立即离开,多少种排队方法能借到书?3、12个高矮不同的人排前后2排,同一排右边的都比左边的高,同一列,后边的比前面的高,共有多少种排法?4、表达式求值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、有A B C三辆列车顺序进入栈式结构的站台,问这三辆车开出站台的序列有
多少种,并写出具体序列。
答:ABC ACB BAC BCA CBA
2、某堆栈的输入序列是a、b、c、d,则下列序列中不可能是它的输出序列的是
( D )
A. a,c,b,d
B. b,c,d,a
C. c,d,b,a
D. d,c,a,b
3、一个栈的输入序列为123…n,若输出序列的第一个元素是n,则输出的第i
个元素是( B )
A. 不确定
B. n-i+1
C. i
D. n-i
4、输入序列为ABC,要变为CBA,经过的栈操作为( B )
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
5、一个栈的输入序列为123…n,若输出序列的第一个元素是i,则输出的第j
个元素是( C )
A. i-j-1
B. i-j
C. i-j+1
D. 不确定
6、在循环顺序队列中,假设以少用一个存储单元的方法来区分队列判满和判空
的条件,front和rear分别为队首和队尾指针,他们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储量为maxSize,则队列的判满条件是(B)。
A.front=rear B.front=(rear-front+1)%maxSize
C.front=rear+1
D.front=(rear+1)%maxSize
基本知识
栈的实现(初始化、出栈、入栈、取栈顶元素、判空)
队列的实现(初始化、出队、入队、取队头元素、判空)
循环队列
编程题
1、两个栈实现队列的功能。
2、图书馆里有没有某本书,现有6人排队,有3个人来借此书,3个人来还此书,且若到某人借书时,若无书,则立即离开,多少种排队方法能借到书?
√√√XXX √√X√XX √√XX√X √X√X√X
(√表示还书,X表示借书)
3、12个高矮不同的人排前后2排,同一排右边的都比左边的高,同一列,后边的比前面的高,共有多少种排法?
4、表达式求值。