栈和队列练习题

合集下载

栈和队列习题及答案

栈和队列习题及答案

栈和队列习题及答案【篇一:栈和队列练习题答案】xt>一、填空题1. 线性表、栈和队列都是结构,可以在线性表的在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。

2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为。

不允许插入和删除运算的一端称为栈底。

3. 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

二、判断正误(√)1. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。

(√)2. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。

正确,都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

错,他们都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

(√)4. 栈和队列的存储方式既可是顺序方式,也可是链接方式。

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

错,有可能。

三、单项选择题(b)1.栈中元素的进出原则是A.先进先出B.后进先出C.栈空则进D.栈满则出(c)2.若已知一个栈的入栈序列是1,2,3,?,n,其输出序列为p1,p2,p3,?,pn,若p1=n,则pi为A.i B.n-iC.n-i+1 D.不确定解释:当p1=n,即n是最先出栈的,根据栈的原理,n必定是最后入栈的(事实上题目已经表明了),那么输入顺序必定是1,2,3,?,n,则出栈的序列是n,?,3,2,1。

(若不要求顺序出栈,则输出序列不确定)(d)3.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为(A)r-f; (B)(n+f-r)% n; (C)n+r-f;(D)(n+r -f)% n e:①1 ②2 ③ 3 ④ 0四、阅读理解1. 【严题集3.3②】写出下列程序段的输出结果(栈的元素类型selem type为char)。

《栈和队列》练习题

《栈和队列》练习题

第3章栈和队列一选择题1. 对于栈操作数据的原则是(B )。

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

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

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

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

【中山大学 1999】A. 不确定B. n-i+1C. iD. n-i4. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是( C )。

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

【南京理工大学 2001】A. iB. n-iC. n-i+1D. 不确定6. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?()【北方交通大学 2001】A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 67. 设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。

栈、队列练习题(答案)

栈、队列练习题(答案)

栈、队列练习题(答案)栈、队列练习题一、选择题1.栈和队列的共同特点是( )。

A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.若让元素1、2、3、4依次入栈,则出栈次序不可能出现()A.3 2 1 4 B.2 1 4 3 C.1 4 2 3 D.4 3 2 13.栈的插入和删除操作在( )进行。

A. 栈顶B. 栈底C. 任意位置D. 指定位置4.用单链表表示的链式队列的队头在链表的()位置。

A. 链头B. 链尾C. 链中D. 以上都不是5.在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是()。

A. p->next=s; s->prior=p;p->next->prior=s; s->next=p->next;B. s->prior=p; s->next=p->next;p->next=s; p->next->prior=s;C. p->next=s; p->next->prior=s;s->prior=p; s->next=p->next;D. s->prior=p; s->next=p->next;p->next->prior=s; p->next=s;6.设有一个栈,元素的进栈次序为A, B, C, D, E,下列是不可能的出栈序列( )。

A.A, B, C, D, E B.B, C, D, E, AC.E, A, B, C, D D.E, D, C, B, A7.在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为( )。

A.top不变B.top=0 C.top-- D.top++8.向一个栈顶指针为hs的链栈中插入一个s结点时,应执行( )。

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

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

习题三栈和队列一单项选择题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的后缀表达式是()。

栈和队列练习题

栈和队列练习题

选择题:1、设abcdef 以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为( D )。

A.fedcba B. bcafed C. dcefba D. cabdef2、若已知一个栈的入栈序列是 1,2,3,…,n,其输出序列为 p1,p2,p3,…,pN,若pN 是 n,则 pi 是( D )。

A. iB. n-iC. n-i+1D. 不确定3、设计一个判别表达式中左,右括号是否配对出现的算法,采用( D )数据结构最佳。

A.线性表的顺序存储结构 B. 队列 C. 线性表的链式存储结构D. 栈4、用链接方式存储的队列,在进行删除运算时( D )。

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

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

A.(rear-front+m)%m B.rear-front+1 C.(front-rear+m)%m D.(rear-front)%m7、若用一个大小为 6的数组来实现循环队列,且当前 rear和 front 的值分别为 0和 3,当从队列中删除一个元素,再加入两个元素后,rear 和 front 的值分别为多少?( B )A. 1 和 5B. 2 和4C. 4 和2D. 5 和18、最大容量为 n 的循环队列,队尾指针是 rear,队头是 front,则队空的条件是( A )。

A. (rear+1) MOD n=frontB. rear=frontC.rear+1=front D. (rear-l) MOD n=front9、栈和队列的共同点是( C )。

A. 都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点10、设栈S和队列 Q 的初始状态为空,元素 e1,e2,e3,e4,e5 和e6 依次通过栈 S,一个元素出栈后即进队列 Q,若 6 个元素出队的序列是 e2,e4,e3,e6,e5,e1 则栈 S 的容量至少应该是( C )。

数据结构第三章栈和队列练习及答案

数据结构第三章栈和队列练习及答案

一、选择题一、选择题1、栈中存取数据的原则()、栈中存取数据的原则()A 、先进先出B 、先进后出C 、后进后出D 、随意进出、随意进出2、队列中存取数据的原则()、队列中存取数据的原则() A 、先进先出 B 、后进先出 C 、先进后出 D 、随意进出、随意进出3、插入和删除只能在一端进行的线性表,称为()、插入和删除只能在一端进行的线性表,称为()A 、队列B 、循环队列C 、栈D 、循环栈、循环栈4、在栈中,出栈操作的时间复杂度为()、在栈中,出栈操作的时间复杂度为()A 、O (1)B 、O (log 2n )C 、O (n )D 、O (n 2)5、设长度为n 的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为()() A 、O (1) B 、O (log 2n ) C 、O (n ) D 、O (n 2)6、设长度为n 的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为()() A 、O (1) B 、O (log 2n ) C 、O (n ) D 、O (n 2)7、一个线性表的第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地址是()是() A 、110 B 、108 C 、100 D 、1208、一个栈的入栈序列是a,b,c,d,e ,则栈的不可能的输出序列是(),则栈的不可能的输出序列是()A 、edcbaB 、decbaC 、dceabD 、abcde9、若已知一个栈的入栈序列是1,2,3,……,n ,其输出序列是p1,p2,p3,……,pn ,若p1=n ,则pi 为()为()A 、iB 、n=iC 、n-i+1D 、不确定、不确定10、判断一个栈ST (最多元素m0)为空的条件是())为空的条件是()A 、ST->top==0B 、ST->top==-1C 、ST->top!=m0D 、ST->top==m0 11、判断一个栈ST (最多元素m0)为满的条件是())为满的条件是()A 、ST->top!=0B 、ST->top==0C 、ST->top!=m0D 、ST->top==m0 12、判断一个循环队列QU (最多元素为m0)为空的条件是())为空的条件是() A 、QU.front==QU.rear B 、QU.front!=QU.rearC 、QU.front==(QU.rear+1)%m0D 、QU.front!=(QU.rear+1)%m013、判断一个循环队列QU (最多元素为m0)为满的条件是())为满的条件是()A 、QU.front==QU.rearB 、QU.front!=QU.rearC 、QU.front==(QU.rear+1)%m0D 、QU.front!=(QU.rear+1)%m0 14、循环队列用数组存放其元素值A[0,m-1],已知其头尾指针分别是rear 和front ,则当前队列的元素个数是()队列的元素个数是()A 、(rear-front+m)%mB 、rear-front+1C 、rear-front-1D 、rear-front 15、栈和队列的共同特点是()、栈和队列的共同特点是()A 、都是先进后出B 、都是先进先出、都是先进先出C 、只允许在端点处插入和删除D 、没有共同点、没有共同点二、填空题二、填空题1、设长度为n 的链队列用单循环链表表示,若只设头指针,则入队和出队操作的时间复杂度分别为(O(N))和(O(1));若又设尾指针,则入队和出队操作的时间复杂度分别为(O(1))和(O(1))。

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

学号_______ 姓名_______ 班级_______ 成绩_______
第三章栈和队列习题
一、判断
1.队列中所有的插入操作都发生在表的一端,删除则发生在表的另
一端()
2.栈具有先进先出的特性()
3.队列为先进后出的结构()
4.栈用于实现子程序调用()
5.栈、队列必须用数组来表示()
6.队列用于操作系统中的作业调度()
7.线性表的每个结点只能是一个简单类型,而链表的每个结点可以
是一个复杂类型。

()
8.栈和链表是两种不同的数据结构。

()
9.栈和队列的存储方式既可是顺序方式,也可是链接方式。

()
二、单项选择
1.循环队列用数组A[maxsize] 表示,下面哪个选项表示该循环队列队满
(A) rear==maxsize-1 (B) front==(rear+1)%maxsize
(C) rear-front==maxsize (D) rear-front==maxsize-1 2.元素的入栈序列是a,b,c,d,则栈的不可能的输出序列是
(A) dcba (B)abcd (C) dcab (D) cbad
3.在用数组queue[maxsize]仿真队列时(temp为int型变量),假设队列中至少有一个元素,出队列操作应执行以下
(A) temp=queue[rear];rear--;(B) rear++;
temp=queue[rear];
(C) temp=queue[front];front--;(D) front++;temp=queue[front];
4.下列哪种数据结构常用于函数调用
(A) 堆栈 (B) 队列 (C) 链表 (D) 数组
5.编译器中通常以哪种数据结构处理递归程序调用
(A)队列(B)数组(C)堆栈(D)记录
6.下列哪些数据结构可用来实现堆栈
(1)链表(2)数组(3)树(4)图
(A)(2),(3)(B)(2),(4)(C)(1),(4)(D)(1),(2)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.判定一个栈ST(最多元素为m0)为空的条件是
A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m0
11.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,
计算队列中元素的公式为
A.r-f;
B.(n+f-r)% n;
C.n+r-F;
D.(n+r-f)% n
12.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个
打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机
则从该缓冲区中取出数据打印.该缓冲区应该是一个结
构.
(A)堆栈 (B)队列 (C)数组 (D)线性表
13、判断一个队列QU(最多元素为m0)为空的条件是。

A. rear- front==m0
B. rear- front-1==m0
C. front== rear
D. front== rear+1
14、判断一个循环队列QU(最多元素为m0)为满队列的条件
是。

A. front== rear
B. front!= rear
C. front==( rear+1)%m0
D. front!=( rear+1)%m0
15.一个队列(数组仿真,最多元素为MaxSize)下列哪个选项表示了队列空间全部被利用?
A.rear – front == MaxSize
B.rear – front == MaxSize –1
C.rear == front
D.rear + 1 == front
16.判定一个循环队列(数组仿真,最多元素为MaxSize)为空的条件是?
A. front == rear
B. front != rear
C. front == (rear + 1)%MaxSize
D. front != (rear + 1)%MaxSize
17、若用一个大小为6的数组来实现循环队列,且当rear和front 的值分别为0和3。

当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?
A 1和5
B 2和4
C 4和2
D 5和1
18、设栈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
三、填空
1.栈和队列都是线性结构,对于栈只能在_____ 位置插入和删除元素,对于队列只能在_____ 位置插入元素和位置删除元素。

2.用大小为MaxSize的数组仿真一个循环队列,front和rear分别记录该队列前后端的索引值,则该循环队列在某一状态下,队列中的元素个数为。

3.在具有n个单元的环状队列中,队满时共有个元素。

4.堆栈、队列的建立可使用两种结构: _ _ 结构和 __ 结构。

5、栈是一种特殊的线性表,允许插入和删除运算的一端称为。

不允许插入和删除运算的一端称为。

6.表达式求值是()应用的一个典型例子。

四、简答
1.试写出执行函数之后的结果。

注:此为环状队列,且每次执行以上一次执行的结果为基础-addqueue()结果包含“队列数据内容”、“front”、“rear”及边界情况的输出
-delqueue()结果包含“队列数据内容”、“front”、“rear”及输出数据值和边界情况的输出
2
1
(1)a ddqueue(30)
(2)d elqueue()
(3)a ddqueue(30)
2.试写出执行函数之后的结果。

注:此为堆栈,且每次执行以上一次执行的结果为基础-push()结果包含“堆栈数据内容”、“top”及边界情况的输出-pop()结果包含“堆栈数据内容”、“top”及输出数据值和边界情况的输出
3
2
1
(1)p ush(30)
(2)p op()
(3)p ush(30)
3.什么是栈?什么是队列?试分别举两个应用实例。

4.顺序队的“假溢出”是怎样产生的?如何知道循环队列是空还是满?
5.设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有
① front=11,rear=19; ② front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?
6、计算表达式 6*3/2-5*1,要求绘出堆栈的处理过程
7、假设CQ[0,….10]是一个环状队列,初始状front=rear=1, 画出做完下列操作后队列的头尾指针的状态变化情况,若不能入队,请指出其元素,并说明理由。

d, e, b, g, h入队;
d, e 出队;
I, j, k, l, m入队;
b出队;
n, o, p, q, r入队。

相关文档
最新文档