栈和队列问题

合集下载

栈和队列问题

栈和队列问题

⼀选择题1. 对于栈操作数据的原则是()。

【青岛⼤学 2001 五、2(2分)】A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2.在作进栈运算时,应先判别栈是否(①),在作退栈运算时应先判别栈是否(②)。

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

为了增加内存空间的利⽤率和减少溢出的可能性,由两个栈共享⼀⽚连续的内存空间时,应将两栈的 ( ④ )分别设在这⽚内存空间的两端,这样,当( ⑤ )时,才产⽣上溢。

①, ②: A. 空 B. 满 C. 上溢 D. 下溢③: A. n-1 B. n C. n+1 D. n/2④: A. 长度 B. 深度 C. 栈顶 D. 栈底⑤: A. 两个栈的栈顶同时到达栈空间的中⼼点.B. 其中⼀个栈的栈顶到达栈空间的中⼼点.C. 两个栈的栈顶在栈空间的某⼀位置相遇.D. 两个栈均不空,且⼀个栈的栈顶到达另⼀个栈的栈底.【上海海运学院1997⼆、1(5分)】【上海海运学院1999⼆、1(5分)】3.⼀个栈的输⼊序列为123…n,若输出序列的第⼀个元素是n,输出第i (1<=i<=n)个元素是()。

A. 不确定B. n-i+1C. iD. n-i【中⼭⼤学 1999 ⼀、9(1分)】4.若⼀个栈的输⼊序列为1,2,3,…,n,输出序列的第⼀个元素是i,则第j个输出元素是()。

A. i-j-1B. i-jC. j-i+1D. 不确定的【武汉⼤学 2000 ⼆、3】5. 若已知⼀个栈的⼊栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pN,若pN 是n,则pi是( )。

A. iB. n-iC. n-i+1D. 不确定【南京理⼯⼤学 2001 ⼀、1(1.5分)】6. 有六个元素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 6【北⽅交通⼤学 2001 ⼀、3(2分)】7. 设栈的输⼊序列是1,2,3,4,则()不可能是其出栈序列。

《数据结构及其应用》笔记含答案 第三章_栈和队列

《数据结构及其应用》笔记含答案 第三章_栈和队列

第3章栈和队列一、填空题1、栈是限定仅在表尾进行插入或删除操作的线性表。

2、栈的修改是按照后进先出的原则进行的。

3、队是一种先进先出的线性表。

4、把队列头尾相接的顺序存储结构称为循环队列。

5、队列也是一种操作受限的线性表,允许插入的一端叫做__队尾___,允许删除的一端叫做__队头__。

二、判断题1、栈和队列的存储,既可以采用顺序存储结构,又可以采用链式存储结构。

(√)2、任何一个递归过程都可以转换成非递归过程。

(√)3、若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列3,2,5,6,4,1。

(√)4、通常使用队列来处理函数的调用。

(╳)5、循环队列通常用指针来实现队列的头尾相接。

(╳)三、单项选择题1、若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在(C)种情况。

A.5,4,3,2,1 B.2,1,5,4,3 C.4,3,1,2,5 D.2,3,5,4,1解释:栈是后进先出的线性表,不难发现C选项中元素1比元素2先出栈,违背了栈的后进先出原则,所以不可能出现C选项所示的情况。

2、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为(C)。

A.i B.n-i C.n-i+1 D.不确定解释:栈是后进先出的线性表,一个栈的入栈序列是1,2,3,…,n,而输出序列的第一个元素为n,说明1,2,3,…,n一次性全部进栈,再进行输出,所以p1=n,p2=n-1,…,pi=n-i+1。

3、数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为(D)。

A.r-f B.(n+f-r)%n C.n+r-f D.(n+r-f)%n解释:对于非循环队列,尾指针和头指针的差值便是队列的长度,而对于循环队列,差值可能为负数,所以需要将差值加上MAXSIZE(本题为n),然后与MAXSIZE(本题为n)求余,即(n+r-f)%n。

数据结构实验三栈和队列的应用

数据结构实验三栈和队列的应用

数据结构实验三栈和队列的应用数据结构实验三:栈和队列的应用在计算机科学领域中,数据结构是组织和存储数据的重要方式,而栈和队列作为两种常见的数据结构,具有广泛的应用场景。

本次实验旨在深入探讨栈和队列在实际问题中的应用,加深对它们特性和操作的理解。

一、栈的应用栈是一种“后进先出”(Last In First Out,LIFO)的数据结构。

这意味着最后进入栈的元素将首先被取出。

1、表达式求值在算术表达式的求值过程中,栈发挥着重要作用。

例如,对于表达式“2 + 3 4”,我们可以通过将操作数压入栈,操作符按照优先级进行处理,实现表达式的正确求值。

当遇到数字时,将其压入操作数栈;遇到操作符时,从操作数栈中弹出相应数量的操作数进行计算,将结果压回操作数栈。

最终,操作数栈中的唯一值就是表达式的结果。

2、括号匹配在程序代码中,检查括号是否匹配是常见的任务。

可以使用栈来实现。

遍历输入的字符串,当遇到左括号时,将其压入栈;当遇到右括号时,弹出栈顶元素,如果弹出的左括号与当前右括号类型匹配,则继续,否则表示括号不匹配。

3、函数调用和递归在程序执行过程中,函数的调用和递归都依赖于栈。

当调用一个函数时,当前的执行环境(包括局部变量、返回地址等)被压入栈中。

当函数返回时,从栈中弹出之前保存的环境,继续之前的执行。

递归函数的执行也是通过栈来实现的,每次递归调用都会在栈中保存当前的状态,直到递归结束,依次从栈中恢复状态。

二、队列的应用队列是一种“先进先出”(First In First Out,FIFO)的数据结构。

1、排队系统在现实生活中的各种排队场景,如银行排队、餐厅叫号等,可以用队列来模拟。

新到达的顾客加入队列尾部,服务完成的顾客从队列头部离开。

通过这种方式,保证了先来的顾客先得到服务,体现了公平性。

2、广度优先搜索在图的遍历算法中,广度优先搜索(BreadthFirst Search,BFS)常使用队列。

从起始节点开始,将其放入队列。

栈和队列习题

栈和队列习题

• • • • • • • • • • • • • • • • •
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. 一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是__ C __。

A. edcbaB. decbaC. dceabD. abcde2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为__ C __。

A. iB. n=iC. n-i+1D. 不确定3. 栈结构通常采用的两种存储结构是__ A __。

A. 顺序存储结构和链式存储结构散列方式和索引方式链表存储结构和数组线性存储结构和非线性存储结构4. 判定一个顺序栈ST(最多元素为m0)为空的条件是_ B ___。

A. top !=0B. top= =0C. top !=m0D. top= =m0-15. 判定一个顺序栈ST(最多元素为m0)为栈满的条件是__ D __。

A. top!=0B. top= =0C. top!=m0D. top= =m0-16. PUSH 和POP 命令常用于(C)操作。

A 队列B 数组C 栈D 记录7. 向一个栈顶指针为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;8. 从一个栈顶指针为HS的链栈中删除一个结点时,用x 保存被删结点的值,则执行_ B _ __。

(不带空的头结点)A. x=HS; HS= HS—>next;B. x=HS—>data;C. HS= HS—>next; x=HS—>data;D. x=HS—>data; HS= HS—>next;9. 一个队列的数据入队序列是1,2,3,4,则队列出队时的输出序列是__ B __ 。

栈和队列习题

栈和队列习题

第三章栈和队列练习题一、单项选择题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. 对于栈操作数据的原则是(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、栈的定义
栈(Stack):是限定在表的一端进行插入和删除运算的线性表,通常将插入、删除的一端称为栈项(top),另一端称为栈底(bottom)。

不含元素的空表称为空栈。

栈的修改是按后进先出的原则进行的,因此,栈又称为后进先出(Last In First Out)的线性表,简称为LIFO表。

真题选解
(例题·填空题)1、如图所示,设输入元素的顺序是(A,B,C,D),通过栈的变换,在输出端可得到各种排列。

若输出序列的第一个元素为D,则输出序列为。

隐藏答案
【答案】DCBA
【解析】根据堆栈"先进后出"的原则,若输出序列的第一个元素为D,则ABCD入栈,输出序列为DCBA
2、栈的基本运算
(1)置空栈InitStack(&S):构造一个空栈S。

第三章 栈与队列 习题及答案

第三章 栈与队列   习题及答案

第三章栈与队列习题及答案一、基础知识题3.1 设将整数1,2,3,4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请回答下述问题:(1)若入、出栈次序为Push(1), Pop(),Push(2),Push(3), Pop(), Pop( ),Push(4), Pop( ),则出栈的数字序列为何(这里Push(i)表示i进栈,Pop( )表示出栈)?(2) 能否得到出栈序列1423和1432?并说明为什么不能得到或者如何得到。

(3)请分析1,2 ,3 ,4 的24种排列中,哪些序列是可以通过相应的入出栈操作得到的。

3.2 链栈中为何不设置头结点?答:链栈不需要在头部附加头结点,因为栈都是在头部进行操作的,如果加了头结点,等于要对头结点之后的结点进行操作,反而使算法更复杂,所以只要有链表的头指针就可以了。

3.3 循环队列的优点是什么? 如何判别它的空和满?答:循环队列的优点是:它可以克服顺序队列的"假上溢"现象,能够使存储队列的向量空间得到充分的利用。

判别循环队列的"空"或"满"不能以头尾指针是否相等来确定,一般是通过以下几种方法:一是另设一布尔变量来区别队列的空和满。

二是少用一个元素的空间。

每次入队前测试入队后头尾指针是否会重合,如果会重合就认为队列已满。

三是设置一计数器记录队列中元素总数,不仅可判别空或满,还可以得到队列中元素的个数。

3.4 设长度为n的链队用单循环链表表示,若设头指针,则入队出队操作的时间为何? 若只设尾指针呢?答:当只设头指针时,出队的时间为1,而入队的时间需要n,因为每次入队均需从头指针开始查找,找到最后一个元素时方可进行入队操作。

若只设尾指针,则出入队时间均为1。

因为是循环链表,尾指针所指的下一个元素就是头指针所指元素,所以出队时不需要遍历整个队列。

3.5 指出下述程序段的功能是什么?(1) void Demo1(SeqStack *S){int i; arr[64] ; n=0 ;while ( StackEmpty(S)) arr[n++]=Pop(S);for (i=0, i< n; i++) Push(S, arr[i]);} //Demo1(2) SeqStack S1, S2, tmp;DataType x;...//假设栈tmp和S2已做过初始化while ( ! StackEmpty (&S1)){x=Pop(&S1) ;Push(&tmp,x);}while ( ! StackEmpty (&tmp) ){x=Pop( &tmp);Push( &S1,x);Push( &S2, x);}(3) void Demo2( SeqStack *S, int m){ // 设DataType 为int 型SeqStack T; int i;InitStack (&T);while (! StackEmpty( S))if(( i=Pop(S)) !=m) Push( &T,i);while (! StackEmpty( &T)){i=Pop(&T); Push(S,i);}}(4)void Demo3( CirQueue *Q){ // 设DataType 为int 型int x; SeqStack S;InitStack( &S);while (! QueueEmpty( Q )){x=DeQueue( Q); Push( &S,x);}while (! StackEmpty( &s)){ x=Pop(&S); EnQueue( Q,x );}}// Demo3(5) CirQueue Q1, Q2; // 设DataType 为int 型int x, i , m = 0;... // 设Q1已有内容,Q2已初始化过while ( ! QueueEmpty( &Q1) ){ x=DeQueue( &Q1 ) ; EnQueue(&Q2, x); m++;}for (i=0; i< n; i++){ x=DeQueue(&Q2) ;EnQueue( &Q1, x) ; EnQueue( &Q2, x);}二、算法设计题3.6 回文是指正读反读均相同的字符序列,如"abba"和"abdba"均是回文,但"good"不是回文。

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的值是_______。

栈队列查找表题目

栈队列查找表题目

题库-栈和队列,查找表;第一部分栈和队列一、填空题1、在栈结构中,允许插入、删除的一端称为__ ____,另一端称为_ _____。

2、对于顺序存储的栈,因为栈的空间是有限的,在进行运算时,可能发生栈的上溢。

3、用单链表实现一个栈的时候,插入一个元素时在单链表的进行。

4、链式栈永远不会发生栈满的情况,此说法是。

5、设有一个顺序栈S,元素1, 2, 3, 4, 5, 6依次进栈,如果6个元素的出栈顺序为2, 3, 4, 6, 5, 1,则顺序栈的容量至少应为。

6、两个栈共享一个向量空间时两个栈的栈底在。

7、向栈中压入元素x的操作是____________。

8、对栈进行退栈时的操作是____________。

9、顺序存储的栈在进行运算时,可能发生栈的下溢。

10、一个栈的输入序列是12345,则栈的输出序列是43521是___ __________。

13、递归算法中,每次递归调用前,系统自动将需要保持的数据放入中。

14、设有一个空栈,现有输入序列1,2,3,4,5,经过push,push,pop,push,pop,push,push 后,输出序列是。

15、在队列中存取数据应遵从的原则是_ ______。

(1)在循环队列中,队空的条件为________;队满的条件为__ ______。

(2)当rear>=front时,队列长度为_____________________;二、选择题1、在栈中存取数据的原则是()。

A.先进先出B.后进先出C.后进后出D.随意进出2、若已知一个栈的入栈序列是1,2,3,……,n,其输出序列是p1,p2,p3……,pn,若p1=n,则pi为( )。

A.I B.n-I C.n-I+1 D.不确定3、判断一个栈ST(最多元素m0)为满的条件是()。

A.ST->top !=0 B. ST->top= =0C.ST->top!=m0 D. ST->top = =m0-14、由两个栈共享一个向量空间的好处是:()。

第三章 栈和队列

第三章 栈和队列

第三章栈和队列一.选择题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. 在作进栈运算时,应先判别栈是否(① ),在作退栈运算时应先判别栈是否(② )。

当栈中元素为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. 你看那排队买奶茶的队伍,这不就是一个典型的队列嘛!大家都按照先来后到的顺序排队,依次购买,多有秩序呀!就像我们遵守规则依次前进一样。

2. 想想学校食堂打饭的时候,餐盘不就像在栈里一样嘛,一个个叠放在那里,先放进去的最后才拿出来,这多形象呀!
3. 周末去超市购物,大家把购物车推来推去,就好像栈里的元素进进出出,不是很有意思吗?
4. 去火车站坐车,大家检票进站不也是排队依次进入嘛,这不就是队列在生活中的体现嘛?哎呀!
5. 家里的碗柜,碗一个个叠起来,拿的时候也是从上面开始拿,这和栈简直一模一样呀,你说神奇不神奇?
6. 图书馆里的书架,书按照一定的顺序摆放,这不就像队列一样整整齐齐的嘛,找起来也方便呀!
7. 上班等电梯的时候,大家不也是排队嘛,先进去的人先上楼,这就是队列呀,难道不是吗?
8. 高速公路上的车辆排队通过收费站,这也是一种队列呀,大家依次缴费通过,多么有秩序呀!
我的观点结论就是:生活中到处都有栈和队列的影子呀,它们让我们的生活更加有序、高效呢!。

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

第3章 栈与队列习题参考答案

第3章 栈与队列习题参考答案

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

一、选择题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 )。

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

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

第三章 栈和队列 试题2. 当利用大小为 n 的数组顺序存储一个栈时,假定用首先应执行( )语句修改 top 指针。

A. top++ ;B. top -- ;top ==n 表示栈空,则向这个栈插入一个元素时, C. top = 0A. 3, 2, 1B. 2, 1, 3C. 3, 1, 2 4.在一个顺序存储的循环队列中,队头指针指向队头元素的( )位置。

A. 前一个B. 后一个C. 当前D. 后面5. 当利用大小为 n 的数组顺序存储一个队列时,该队列的最大长度为( )。

A. n-2B. n-1C. nD. n+16. 从一个顺序存储的循环队列中删除一个元素时,需要( )。

A. 队头指针加一B. 队头指针减一C. 取出队头指针所指的元素D. 取出队尾指针所指的元素一、单项选择题 1. 栈的插入和删除操作在( A. 栈顶)进行。

B. 栈底C. 任意位置D. 指定位置3. 若让元素 1,2,3依次进栈,则出栈次序不可能出现( )种情况。

D. topD. 1, 3, 27. 假定一个顺序存储的循环队列的队头和队尾指针分别为front 和 rear ,则判断队空的条件为 )。

A. front+1 == rearB. rear+1 == frontC. front == 0D. front == rear8. 假定一个链式队列的队头和队尾指针分别为A. front == rear C. rear != NULLfront 和 rear ,则判断队空的条件为( )。

B. front != NULLD. front == NULL9. 设链式栈中结点的结构为( data, link 个由指针 s 所指的结点,则应执行操作( A.top->link = s;C. s->link = top ; top = s),且 top 是指向栈顶的指针。

若想在链式栈的栈顶插入一 )。

B. s->link = top->link ; top->link = s D. s->link = top; top = top->link;10. 设 链式栈中结点的结构为( 并将被摘除结点的值保存到 data, link ),且 top x中,则应执行操作(是指向栈顶的指针。

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

⼀选择题1. 对于栈操作数据的原则是()。

【青岛⼤学 2001 五、2(2分)】A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2.在作进栈运算时,应先判别栈是否(①),在作退栈运算时应先判别栈是否(②)。

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

为了增加内存空间的利⽤率和减少溢出的可能性,由两个栈共享⼀⽚连续的内存空间时,应将两栈的 ( ④ )分别设在这⽚内存空间的两端,这样,当( ⑤ )时,才产⽣上溢。

①, ②: A. 空 B. 满 C. 上溢 D. 下溢③: A. n-1 B. n C. n+1 D. n/2④: A. 长度 B. 深度 C. 栈顶 D. 栈底⑤: A. 两个栈的栈顶同时到达栈空间的中⼼点.B. 其中⼀个栈的栈顶到达栈空间的中⼼点.C. 两个栈的栈顶在栈空间的某⼀位置相遇.D. 两个栈均不空,且⼀个栈的栈顶到达另⼀个栈的栈底.【上海海运学院1997⼆、1(5分)】【上海海运学院1999⼆、1(5分)】3.⼀个栈的输⼊序列为123…n,若输出序列的第⼀个元素是n,输出第i (1<=i<=n)个元素是()。

A. 不确定B. n-i+1C. iD. n-i【中⼭⼤学 1999 ⼀、9(1分)】4.若⼀个栈的输⼊序列为1,2,3,…,n,输出序列的第⼀个元素是i,则第j个输出元素是()。

A. i-j-1B. i-jC. j-i+1D. 不确定的【武汉⼤学 2000 ⼆、3】5. 若已知⼀个栈的⼊栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pN,若pN 是n,则pi是( )。

A. iB. n-iC. n-i+1D. 不确定【南京理⼯⼤学 2001 ⼀、1(1.5分)】6. 有六个元素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 6【北⽅交通⼤学 2001 ⼀、3(2分)】7. 设栈的输⼊序列是1,2,3,4,则()不可能是其出栈序列。

【中科院计算所2000⼀、10(2分)】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,8.⼀个栈的输⼊序列为12345,则下列序列中不可能是栈的输出序列的是()。

A. 2 3 4 1 5B. 5 4 1 3 2C. 2 3 1 4 5D. 1 5 4 3 2【南开⼤学2000⼀、1】【⼭东⼤学2001⼆、4(1分)】【北京理⼯⼤学2000 ⼀、2(2分)】9. 设⼀个栈的输⼊序列是 1,2,3,4,5,则下列序列中,是栈的合法输出序列的是()。

A. 5 1 2 3 4B. 4 5 1 3 2C. 4 3 1 2 5D. 3 2 1 5 4【合肥⼯业⼤学 2001 ⼀、1(2分)】10. 某堆栈的输⼊序列为a, b,c ,d,下⾯的四个序列中,不可能是它的输出序列的是()。

A. a,c,b,dB. b, c,d,aC. c, d,b, aD. d, c,a,b【北京航空航天⼤学 2000 ⼀、3(2分)】【北京邮电⼤学 1999 ⼀、3(2分)】11. 设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下⾯得不到的序列为()。

A.fedcba B. bcafed C. dcefba D. cabdef【南京理⼯⼤学 1996 ⼀、9(2分)】12.设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是( )。

A.XYZ B. YZX C. ZXY D. ZYX【南京理⼯⼤学 1997 ⼀、5(2分)】13.输⼊序列为ABC,可以变为CBA时,经过的栈操作为()【中⼭⼤学1999 ⼀、8(1分)】A. push,pop,push,pop,push,popB. push,push,push,pop,pop,popC. push,push,pop,pop,push,popD. push,pop,push,push,pop,pop14.若⼀个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下⾯x进栈的正确操作是( )。

A.top:=top+1; V [top]:=x B. V [top]:=x; top:=top+1C. top:=top-1; V [top]:=xD. V [top]:=x; top:=top-1【南京理⼯⼤学 1998 ⼀、13(2分)】15. 若栈采⽤顺序存储⽅式存储,现两栈共享空间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]【南京理⼯⼤学 1999 ⼀、14(1分)】16. 栈在()中应⽤。

【中⼭⼤学 1998 ⼆、3(2分)】A. 递归调⽤B. ⼦程序调⽤C. 表达式求值D. A,B,C17. ⼀个递归算法必须包括()。

【武汉⼤学 2000 ⼆、2】A. 递归部分B. 终⽌条件和递归部分C. 迭代部分D.终⽌条件和迭代部分18. 执⾏完下列语句段后,i值为:()【浙江⼤学 2000 ⼀、6 (3分)】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. ⽆限递归19.表达式a*(b+c)-d的后缀表达式是()。

【南京理⼯⼤学2001⼀、2(1.5分)】A.abcd*+- B. abc+*d- C. abc*+d- D. -+*abcd20.表达式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;(*^(-【青岛⼤学 2000 五、5(2分)】21. 设计⼀个判别表达式中左,右括号是否配对出现的算法,采⽤()数据结构最佳。

A.线性表的顺序存储结构 B. 队列 C. 线性表的链式存储结构 D. 栈【西安电⼦科技⼤学 1996 ⼀、6(2分)】22. ⽤链接⽅式存储的队列,在进⾏删除运算时()。

【北⽅交通⼤学 2001 ⼀、12(2分)】A. 仅修改头指针B. 仅修改尾指针C. 头、尾指针都要修改D. 头、尾指针可能都要修改23.⽤不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进⾏删除操作时( )。

【北京理⼯⼤学 2001 六、3(2分)】A.仅修改队头指针 B. 仅修改队尾指针C. 队头、队尾指针都要修改D. 队头,队尾指针都可能要修改24. 递归过程或函数调⽤时,处理参数及返回地址,要⽤⼀种称为()的数据结构。

A.队列 B.多维数组 C.栈 D. 线性表【福州⼤学 1998 ⼀、1(2分)】25. 假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。

【北京⼯商⼤学 2001 ⼀、2(3分)】A.(rear-front+m)%m B.rear-front+1 C.(front-rear+m)%m D.(rear-front)%m26.循环队列A[0..m-1]存放其元素值,⽤front和rear分别表⽰队头和队尾,则当前队列中的元素数是( )。

【南京理⼯⼤学 2001 ⼀、5(1.5分)】A. (rear-front+m)%mB. rear-front+1C. rear-front-1D. rear-front27.循环队列存储在数组A[0..m]中,则⼊队时的操作为()。

【中⼭⼤学1999 ⼀、6(1分)】A. rear=rear+1B. rear=(rear+1) mod (m-1)C. rear=(rear+1) mod mD. rear=(rear+1)mod(m+1)28.若⽤⼀个⼤⼩为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除⼀个元素,再加⼊两个元素后,rear和front的值分别为多少?( )【浙江⼤学1999 四、1(4分)】A. 1和 5B. 2和4C. 4和2D. 5和129.已知输⼊序列为abcd经过输出受限的双向队列后能得到的输出序列有()。

A. dacbB. cadbC. dbcaD. bdacE. 以上答案都不对【西安交通⼤学 1996 三、3 (3分)】30. 若以1234作为双端队列的输⼊序列,则既不能由输⼊受限的双端队列得到,也不能由输出受限的双端队列得到的输出序列是()。

【西安电⼦科技⼤学1996 ⼀、5(2分)】A. 1234B. 4132C. 4231D. 421331.最⼤容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。

A. (rear+1) MOD n=frontB. rear=frontC.rear+1=front D. (rear-l) MOD n=front【南京理⼯⼤学 1999 ⼀、16(2分)】32. 栈和队列的共同点是()。

【燕⼭⼤学 2001 ⼀、1(2分)】A. 都是先进先出B. 都是先进后出C. 只允许在端点处插⼊和删除元素D. 没有共同点33. 栈的特点是(①),队列的特点是(②),栈和队列都是(③)。

若进栈序列为1,2,3,4则(④)不可能是⼀个出栈序列(不⼀定全部进栈后再出栈);若进队列的序列为1,2,3,4 则(⑤)是⼀个出队列序列。

【北⽅交通⼤学 1999 ⼀、1(5分)】①, ②: A. 先进先出 B. 后进先出 C. 进优于出 D. 出优于进③: A.顺序存储的线性结构 B.链式存储的线性结构C.限制存取点的线性结构D.限制存取点的⾮线性结构④, ⑤: A. 3,2,1,4 B. 3,2,4,1 C. 4,2,3,1 D. 4,3,2,1 F. 1,2,3,4 G. 1,3,2,434. 栈和队都是()【南京理⼯⼤学 1997 ⼀、3(2分)】A.顺序存储的线性结构 B. 链式存储的⾮线性结构C. 限制存取点的线性结构D. 限制存取点的⾮线性结构35. 设栈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【南京理⼯⼤学 2000 ⼀、6(1.5分)】36.⽤单链表表⽰的链式队列的队头在链表的()位置。

相关文档
最新文档