PTA第三章栈和队列练习题
chapter3 栈与队列(key)
第3章栈和队列一、选择题1. 对于栈操作数据的原则是()。
A. 先进先出B. 后进先出C. 后进后出D. 不分顺序【答案】A2. 在作入栈运算时,应先判别栈是否( ①),在作出栈运算时应先判别栈是否( ②)。
当栈中元素为n个,作入栈运算时发生上溢,则说明该栈的最大容量为( ③)。
①, ②: A. 空 B. 满 C. 上溢 D. 下溢③: A. n-1 B. n C. n+1 D. n/2【答案】BAB3. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i (1<=i<=n)个元素是()。
A. 不确定B. n-i+1C. iD. n-i【答案】B4. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。
A. i-j-1B. i-jC. j-i+1D. 不确定的【答案】D5. 设有三个元素X,Y,Z顺序入栈(入栈过程中允许出栈),下列得不到的出栈排列是( )。
A.XYZ B. YZX C. ZXY D. ZYX【答案】C6. 输入序列为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,pop 【答案】B7. 栈可以在()中应用。
A. 递归调用B. 子程序调用C. 表达式求值D. A,B,C【答案】D8. 一个递归算法必须包括()。
A. 递归部分B. 终止条件和递归部分C. 迭代部分D.终止条件和迭代部分【答案】B9. 执行完下列语句段后,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. 无限递归【答案】B10. 表达式3* 2^(4+2*2-6*3)-5求值过程中当扫描到6时,操作数栈和运算符栈分别为(),其中^为乘幂。
数据结构第三章(栈与队列)考试题目
第三章栈与队列一单项选择题:1.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为( )A.i B.n-i C.n-i+1 D.不确定2.栈和队列的共同点是( )A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点3.若依次输入数据元素序列{a,b,c,d,e,f,g}进栈,出栈操作可以和入栈操作间隔进行,则下列哪个元素序列可以由出栈序列得到?( )A.{d,e,c,f,b,g,a} B.{ f,e,g,d,a,c,b}C.{e,f,d,g,b,c,a} D.{ c,d,b,e,g,a,f}4.一个栈的入栈序列是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,25. 队列操作的原则是( )A. 先进先出B. 后进先出C. 只能进行插入D. 只能进行删除6. 栈的插入与删除是在( )进行。
A. 栈顶B. 栈底C. 任意位置D. 指定位置7.假设顺序栈的定义为:typedef struct {selemtype *base; /* 栈底指针*/selemtype *top; /* 栈顶指针*/int stacksize; /* 当前已分配的存储空间,以元素为单位*/}sqstack;变量st为sqstack型,则栈st为空的判断条件为()。
A.st.base == NULL B.st.top == st.stacksizeC.st.top-st.base>= st.stacksize D.st.top == st.base8.假设顺序栈的定义同上题,变量st为sqstack型,则栈st为满的判断条件为()。
A.st.base == NULL B.st.top == st.stacksizeC.st.top-st.base>= st.stacksize D.st.top == st.base9.在少用一个元素空间的循环队列QU ( m0为最大队列长度(以元素为单位),front和rear分别为队列的队头指针和队尾指针) 中,当队列非空时,若插入一个新的数据元素,则其队尾指针rear的变化是( )。
栈、队列练习题(答案)
栈、队列练习题(答案)栈、队列练习题一、选择题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结点时,应执行( )。
PTA第三章栈和队列练习题教学提纲
1-1通过对堆栈S 操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。
输出的序列为:123。
(2分)TF 作者: DS 课程组单位: 浙江大学 1-2在用数组表示的循环队列中,front 值一定小于等于rear 值。
(1分)TF 作者: DS 课程组单位: 浙江大学 1-3若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。
(2分)TF 作者: 徐镜春单位: 浙江大学 1-4If keys are pushed onto a stack in the order {1, 2, 3, 4, 5}, then it is impossible to obtain the output sequence {3, 4, 1, 2, 5}. (2分)TF 作者: 徐镜春单位: 浙江大学 1-5所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。
(1分)TF 作者: DS 课程组单位: 浙江大学 1-6An algorithm to check for balancing symbols in an expression uses a stack to store the symbols. (1分)T F 2-1设栈S 和队列Q 的初始状态均为空,元素a 、b 、c 、d 、e 、f 、g 依次进入栈S 。
若每个元素出栈后立即进入队列Q ,且7个元素出队的顺序是b 、d 、c 、f 、e 、a 、g ,则栈S 的容量至少是: (2分)1. 12. 23. 34. 4作者: DS课程组单位: 浙江大学2-2若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是?(2分)1. b c a e f d2. c b d a e f3. d c e b f a4. a f e d c b作者: DS课程组单位: 浙江大学2-3设一个栈的输入序列是1、2、3、4、5,则下列序列中,是栈的合法输出序列的是?(2分)1. 3 2 1 5 42. 5 1 2 3 43. 4 5 1 3 24. 4 3 1 2 51.PPPOOOPPOPPOOO2.POPOPOPPOPPOOO3.POPPOOPPOPOOPO4.POPPOOPPOPPOOO作者: DS课程组单位: 浙江大学2-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. 用链接方式存储的队列,在进行删除运算时()。
数据结构第3章 栈与队列习题
数据结构第3章栈与队列习题第3章栈与队列一、单项选择题1.元素A、B、C、D依次进顺序栈后,栈顶元素是,栈底元素是。
A.A B.B C.CD.D2.经过以下栈运算后,x的值是。
InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x); A.a C.1B.b D.03.已知一个栈的进栈序列是ABC,出栈序列为CBA,经过的栈操作是。
A.push,pop,push,pop,push,pop C.push,push,pop,pop,push,popB.push,push,push,pop,pop,pop D.push,pop,push,push,pop,pop4.设一个栈的输入序列为A、B、C、D,则借助一个栈所得到的序列是。
A.A,B,C,DB.D,C,B,AC.A,C,D,B D.D,A,B,C5.一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是。
A.edcba C.dceabB.decba D.abcde6.已知一个栈的进栈序列是1,2,3,……,n,其输出序列的第一个元素是i,则第j个出栈元素是。
A.i C.j-i+1B.n-i D.不确定7.已知一个栈的进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,Pn,若p1=n,则pi的值。
A.i C.n-i+1B.n-i D.不确定8.设n个元素进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,pn,若p1=3,则p2的值。
A.一定是2B.一定是1C.不可能是1 D.以上都不对9.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p3=1,则p1的值。
A.可能是2 C.不可能是2B.一定是1 D.不可能是310.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p3=3,则p1的值。
A.可能是2 C.不可能是1B.一定是2 D.一定是111.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若pn=1,则pi(1≤i≤n-1)的值。
栈和队列_习题
第三章栈和队列一、单项选择题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.若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是( )A) 1,4,3,2 B) 2,3,4,1C) 3,1,4,2 D) 3,4,2,13.栈和队列的共同点( )A) 都是先进先出B) 都是后进先出C) 只允许在端点处插入和删除元素D) 没有共同点4.若已知一个进栈序列是1,2,3,……,n,其输出序列是p1,p2,p3,……pn, 若p1=n, 则pi(1<i<n)为( )。
A) I B) n-iC) n-i+1 D) 不确定5.判断一个栈ST(最多元素为MaxSize)为空的条件是( )A) ST->top==1 B) ST->top==-1C) ST->top!=MaxSize-1 D) ST->top==MaxSize-16.向一个栈指针为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;7.在一个链式队列中.假设f和r分别为队头和队尾指针,则插入s所指的结点运算是()A) f->next=s;f=s; B) r->next=s;r=s;C) s->next=s;r=s; D) s->next=f;f=s;8.在一个链式队列中,假设f和r分别为队头和队尾指针,则删除结点的运算是()A) r=f->next; B) r=r->next;C) f=f->next; D) f=r->next;9.下列关于线性表,栈和队列叙述,错误的是()A) 线性表是给定的n(n必须大于零)个元素组成的序列B) 线性表允许在表的任何位置进行插入和删除操作C) 栈只允许在一端进行插入和删除操作D) 队列只允许在一端进行插入一端进行删除10.一个队列的入队序列是1,2,3,4,则队列的输出序列是()A) 4,3,2,1 B) 1,2,3,4C) 1,4,3,2 D) 3,2,4,111.设初始输入序列为1,2,3,4,5,利用一个栈产生输出序列,下列()序列是不可能通过栈产生的.A) 1,2,3,4,5 B) 5,3,4,1,2C) 43,2,1,5 D) 3,4,5,2,112.设栈s的初始状态为空,6个元素的入栈顺序为e1,e2,e3,e4,e5和e6.若出栈的顺序是e2,e4, e3,e6,e5,e1,则栈s的容量至少应该是()A) 6 B) 4C) 3 D) 213.为了减小栈溢出的可能性,可以让两个栈共享一片连续存储空间,两个栈的栈底分别设在这片空间的两端,这样只有当()时才可能产生上溢。
第三章栈与队列 练习题
第三章栈与队列练习题一、选择题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结点时,则执行()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;7、一个队列的入列序列是1,2,3,4,则队列的输出序列是(B )//尾插入元素,头删除元素。
A、4,3,2,1B、1,2,3,4C、1,4,3,2D、3,2,4,19、循环队列SQ采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front和rear,则判定此循环队列为满的条件是(C)//不懂啊!!!A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==(Q.rear+1)%nD、Q.front!=(Q.rear+1)%n11、用单链表表示的链式队列的队头在链表的(A)位置A、链头B、链尾C、链中12、判定一个链队列Q(最多元素为n个)为空的条件是( A)A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==(Q.rear+1)%nD、Q.front!=(Q.rear+1)%n14、在一个链队列Q中,删除一个结点需要执行的指令是(C)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、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时(D)A、仅修改队头指针B、仅修改队尾指针C、队头尾指针都要修改D、队头尾指针都可能要修改。
数据结构第三章 栈和队列题库(30道)
数据结构第三章栈和队列1、栈的“先进后出”特性是指(——[单选题]A 最后进栈的元素总是最先出栈B 当同时进行进栈和出栈操作时,总是进栈优先C 每当有出栈操作时,总要先进行一次进栈操作D 每次出栈的元素总是最先进栈的元素正确答案:A2、设一个栈的进栈序列是A、B、C、D(即元素A~D依次通过该栈),则借助该栈所得到的输出序列不可能是( )。
——[单选题]A A,B,C,DB D,C,B,AC A,C,D,BD D,A,B,C正确答案:D3、一个栈的进栈序列是a、b、c、d、e,则栈的不可能的输出序列是( )。
——[单选题]A edcbaB decbaC dceabD abcde正确答案:C4、已知一个栈的进栈序列是1,2,3,…,n,其输出序列的第一个元素是i(1≤i≤n)则第j(1≤j≤n)个出栈元素是( )。
——[单选题]A iB n-iC j-i+1D 不确定正确答案:D5、设顺序栈st的栈顶指针top的初始时为-1,栈空间大小为MaxSize,则判定st栈为栈空的条件为( )。
——[单选题]A st.top==-1B st.top!=-1C st.top!=MaxSizeD st.top==MaxSize6、设顺序栈st的栈顶指针top的初始时为-1,栈空间大小为MaxSize,则判定st栈为栈满的条件是。
——[单选题]A st.top!=-1B st.top==-1C st.top!=MaxSize-1D st.top==MaxSize-1正确答案:D7、当用一个数组data[0..n- 1]存放栈中元素时,栈底最好(——[单选题]A 设置在data[0]处B 设置在data[n- 1]处C 设置在data[0]或data[n- 1]处D 设置在data数组的任何位置正确答案:C8、若一个栈用数组data[1..n]存储,初始栈顶指针top为0,则以下元素x进栈的正确操作是(——[单选题]A top++; data[top]=x;B data[top]=x; top++;C Top--; data[top]=x;D data[top]=x; top--;正确答案:A9、若一个栈用数组data[1..n]存储,初始栈顶指针top为n,则以下元素I进栈的正确操作是(——[单选题]A top++; data[top]= x;B data[top]=x; top++ ;C top--; data top]=x;D data[top]=x; top--;正确答案:D10、队列中元素的进出原则是( )。
第三章栈和队列习题
一、判断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-12.元素的入栈序列是a,b,c,d,则栈的不可能的输出序列是(A) dcba (B)abcd (C) dcab (D) cbad3.在用数组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=m011.数组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==m0B. rear- front-1==m0C. front== rearD. front== rear+114、判断一个循环队列QU(最多元素为m0)为满队列的条件是A. front== rearB. front!= rearC. front==( rear+1)%m0D. front!=( rear+1)%m015.一个队列(数组仿真,最多元素为MaxSize)下列哪个选项表示了队列空间全部被利用?A. rear – front == MaxSizeB. rear – front == MaxSize –1C. rear == frontD. rear + 1 == front16.判定一个循环队列(数组仿真,最多元素为MaxSize)为空的条件是? A. front == rear B. front != rearC. front == (rear + 1)%MaxSizeD. front != (rear + 1)%MaxSize17、若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0和3。
数据结构第三章(栈与队列)考试题目
第三章栈与队列一单项选择题:1.假设已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,假设 p1=n,那么pi为( )A.i B.n-i C.n-i+1 D.不确信2.栈和队列的一起点是( )A.都是先进后出 B.都是先进先出C.只许诺在端点处插入和删除元素 D.没有一起点3.假设依次输入数据元素序列{a,b,c,d,e,f,g}进栈,出栈操作能够和入栈操作距离进行,那么以下哪个元素序列能够由出栈序列取得?( )A.{d,e,c,f,b,g,a} B.{ f,e,g,d,a,c,b}C.{e,f,d,g,b,c,a} D.{ c,d,b,e,g,a,f}4.一个栈的入栈序列是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,25. 队列操作的原则是( )A. 先进先出B. 后进先出C. 只能进行插入D. 只能进行删除6. 栈的插入与删除是在( )进行。
A. 栈顶B. 栈底C. 任意位置D. 指定位置7.假设顺序栈的定义为:typedef struct {selemtype *base; /* 栈底指针*/selemtype *top; /* 栈顶指针*/int stacksize; /* 当前已分配的存储空间,以元素为单位*/}sqstack;变量st为sqstack型,则栈st为空的判断条件为()。
A. == NULL B. ==C.D. ==8.假设顺序栈的概念同上题,变量st为sqstack型,那么栈st为满的判定条件为()。
A. == NULL B. ==C.D. ==9.在少用一个元素空间的循环队列QU ( m0为最大队列长度(以元素为单位),front和rear 别离为队列的队头指针和队尾指针 ) 中,当队列非空时,假设插入一个新的数据元素,那么其队尾指针rear的转变是(。
PTA第三章栈和队列练习题
1-1通过对堆栈S操作:Push(S,1),Push(S,2),Pop(S),Push(S,3),Pop(S),Pop(S)。
输出的序列为:123。
(2分)T F作者:DS课程组单位:浙江大学1-2在用数组表示的循环队列中,front值一定小于等于rear值。
(1分)T F作者:DS课程组单位:浙江大学1-3若一个栈的输入序列为{1,2,3,4,5},则不可能得到{3,4,1,2,5}这样的出栈序列。
(2分)T F作者:徐镜春单位:浙江大学1-4If keys are pushed onto a stack in the order{1,2,3,4,5},then it is impossible to obtain the output sequence{3,4,1,2,5}.(2分)T F作者:徐镜春单位:浙江大学1-5所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。
(1分)T F作者:DS课程组单位:浙江大学1-6An algorithm to check for balancing symbols in an expression uses a stack to store the symbols.(1分)T F2-1设栈S和队列Q的初始状态均为空,元素a、b、c、d、e、f、g依次进入栈S。
若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是b、d、c、f、e、a、g,则栈S的容量至少是:(2分)1.12.23.34.4作者:DS课程组单位:浙江大学2-2若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是?(2分)1.bcaefd2.cbdaef3.dcebfa4.afedcb作者:DS课程组单位:浙江大学2-3设一个栈的输入序列是1、2、3、4、5,则下列序列中,是栈的合法输出序列的是?(2分)1.321542.512343.451324.431251.PPPOOOPPOPPOOO2.POPOPOPPOPPOOO3.POPPOOPPOPOOPO4.POPPOOPPOPPOOO作者:DS课程组单位:浙江大学2-5设一个堆栈的入栈顺序是1、2、3、4、5。
第三章栈和队列练习题答案
第三章栈和队列练习题答案一、名词说明:1.栈、栈顶、栈底、栈顶元素、空栈2.顺序栈3.链栈4.递归5.队列、队尾、队头6.顺序队7.循环队8.队满9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵二、填空题:1.栈修改的原那么是_先进后出________或称后进先出________,因此,栈又称为__后进先出______线性表。
在栈顶进行插入运算,被称为_进栈_______或__入栈______,在栈顶进行删除运算,被称为___退栈_____或__出栈______。
2.栈的大体运算至少应包括_初始化InitStack(S)_______、_进栈Push(S,X)_______、_退栈Pop(S)_______、读栈顶Top(S)________、_判栈空Empty(S)_______五种。
3.关于顺序栈,假设栈顶下标值top=0,现在,若是作退栈运算,那么产生“__下溢______”。
4.关于顺序栈而言,在栈满状态下,若是现在在作进栈运算,那么会发生“_上溢_______”。
5.一样地,栈和线性表类似有两种实现方式,即__顺序______实现和__链接实现。
6. top=0表示栈空,现在作退栈运算,那么产生“下溢”;top=sqstack_maxsize-1表示栈满,现在作进栈运算,那么产生“上溢”。
7.以下运算实此刻顺序栈上的初始化,请在________处用适当的句子予以填充。
int InitStack(SqStackTp *sq){ sq->top=0;return(1);}8.以下运算实此刻顺序栈上的进栈,请在________处用适当的语句予以填充。
Int Push(SqStackTp *sq,DataType x){ if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);}else{_ sq->top++,sq->data[sq->top] =x;return(1);}}9.以下运算实此刻顺序栈上的退栈,请在________________用适当句子予以填充。
数据结构-第3章--栈和队列练习题.doc
第3章栈和队列一选择题1. 对于栈操作数据的原则是()。
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. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.3. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。
A. 不确定B. n-i+1C. iD. n-i4. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。
A. i-j-1B. i-jC. j-i+1D. 不确定的5. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( )。
A. iB. n-iC. n-i+1D. 不确定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 67. 设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。
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. 一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是()。
第3章队列和栈习题参考答案[4页]
一、选择题1. A2. C3. B4. B5. A6. B7. C8. C9. B10. D11. B12. D13. B14. D15. A16. B17. D18. C19. C20. B21. B二、填空题1. 队列2. FILO FIFO3. 栈顶栈底4. 前一个位置;n-15. 尾首6. 队尾队头7. 线性表后进先出表8. s->next=h->next h=s9. q->front->next=NULLq->rear=q->front;10. stack三、判断题1. ×2. √3. √4. ×5. √6. √7. √8. √9. ×10. ×四、简答题1. 顺序队列的结构:typedef struct{datatype data[maxsize]int front rear;}sequeue;sequeue *sq;2. 解答:链栈不需要在头部附加头结点,因为栈都是在头部进行操作的,如果加了头结点,等于要对头结点3. (1)出栈序列为:1324(2)不能得到1423序列。
因为要得到14的出栈序列,则应做Push(1),Pop(),Push(2),Push(3),Push(4),Pop()。
这样,3在栈顶,2在栈底,所以不能得到23的出栈序列。
能得到1432的出栈序列。
具体操作为:Push(1), Pop(),Push(2),Push(3),Push(4),Pop(),Pop(),Pop()。
4. 用队列长度计算公式:(N+r-f)% N① L=(40+19-11)% 40=8 ② L=(40+11-19)% 40=325. 答:该算法的功能是:利用堆栈做辅助,将队列中的数据元素进行逆置。
6. 栈是仅允许在一端进行插入和删除的线性表,又称为后进先出表, 队列是允许在一端插入,在另一端删除的线性表,允许插入的一端的称为队尾,允许删除的一端称为队头,又称为先进先出表。
栈和队列练习题答案
E: ①1 ②2 四、阅读理解
③3
④0
1. 【严题集 3.3②】 写出下列程序段的输出结果(栈的元素类型 void main( ){ Stack S; Char x,y; InitStack(S); x=’ c’ ;y= ’ k’;
.
SElem Type 为 char)。
Push(S,x); Push(S, ’ a’Pu);sh(S,y); Pop(S,x); Push(S, ’ t ’ ); Push(S,x); Pop(S,x); Push(S, ’ s’ ); while(!StackEmpty(S)){ Pop(S,y);printf(y); }; Printf(x); } 答:输出为“ stack”。
2. 【严题集 3.12②】 写出下列程序段的输出结果(队列中的元素类型 void main( ){ Queue Q; Init Queue (Q); Char x= ’ e’ ; y= ’ c’; EnQueue (Q, ’ h’Q);uEeune (Q, ’ r ’En);Queue (Q, y); DeQueue (Q,x); EnQueue (Q,x); DeQueue (Q,x); EnQ ueue (Q, ’ a’ ); while(!QueueEmpty(Q)){ DeQueue (Q,y);printf(y); }; Printf(x); } 答:输出为“ char”。
第 3 章栈和队列练习题答案
精品文档
一、填空题
1. 线性表、栈和队列都是 线性 结构,可以在线性表的
在 栈顶 插入和删除元素;对于队列只能在
队尾
任何 插入和
位置插入和删除元素;对于栈只能 队首 删除元素。
2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为
PTA第三章栈和队列理解练习知识题
1-1通过对堆栈S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。
输出的序列为:123。
(2分)T F作者: DS课程组单位: 浙江大学1-2在用数组表示的循环队列中,front值一定小于等于rear值。
(1分)T F作者: DS课程组单位: 浙江大学1-3若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。
(2分)T F作者: 徐镜春单位: 浙江大学1-4If keys are pushed onto a stack in the order {1, 2, 3, 4, 5}, then it is impossible to obtain the output sequence {3, 4, 1, 2, 5}. (2分)T F作者: 徐镜春单位: 浙江大学1-5所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。
(1分)T F作者: DS课程组单位: 浙江大学1-6An algorithm to check for balancing symbols in an expression uses a stack to store the symbols. (1分)T F2-1设栈S和队列Q的初始状态均为空,元素a、b、c、d、e、f、g依次进入栈S。
若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是b、d、c、f、e、a、g,则栈S的容量至少是:(2分)1. 12. 23. 34. 4作者: DS课程组单位: 浙江大学2-2若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是?(2分)1. b c a e f d2. c b d a e f3. d c e b f a4. a f e d c b作者: DS课程组单位: 浙江大学2-3设一个栈的输入序列是1、2、3、4、5,则下列序列中,是栈的合法输出序列的是?(2分)1. 3 2 1 5 42. 5 1 2 3 43. 4 5 1 3 24. 4 3 1 2 51.PPPOOOPPOPPOOO2.POPOPOPPOPPOOO3.POPPOOPPOPOOPO4.POPPOOPPOPPOOO作者: DS课程组单位: 浙江大学2-5设一个堆栈的入栈顺序是1、2、3、4、5。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1-1通过对堆栈S 操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。
输出的序列为:123。
(2分)TF 作者: DS 课程组单位: 浙江大学 1-2在用数组表示的循环队列中,front 值一定小于等于rear 值。
(1分)TF 作者: DS 课程组单位: 浙江大学 1-3若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。
(2分)TF 作者: 徐镜春单位: 浙江大学 1-4If keys are pushed onto a stack in the order {1, 2, 3, 4, 5}, then it is impossible to obtain the output sequence {3, 4, 1, 2, 5}. (2分)TF 作者: 徐镜春单位: 浙江大学 1-5所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。
(1分)TF 作者: DS 课程组单位: 浙江大学 1-6An algorithm to check for balancing symbols in an expression uses a stack to store the symbols. (1分)T F 2-1设栈S 和队列Q 的初始状态均为空,元素a 、b 、c 、d 、e 、f 、g 依次进入栈S 。
若每个元素出栈后立即进入队列Q ,且7个元素出队的顺序是b 、d 、c 、f 、e 、a 、g ,则栈S 的容量至少是: (2分)1. 12. 23. 34. 4作者: DS课程组单位: 浙江大学2-2若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是?(2分)1. b c a e f d2. c b d a e f3. d c e b f a4. a f e d c b作者: DS课程组单位: 浙江大学2-3设一个栈的输入序列是1、2、3、4、5,则下列序列中,是栈的合法输出序列的是?(2分)1. 3 2 1 5 42. 5 1 2 3 43. 4 5 1 3 24. 4 3 1 2 51.PPPOOOPPOPPOOO2.POPOPOPPOPPOOO3.POPPOOPPOPOOPO4.POPPOOPPOPPOOO作者: DS课程组单位: 浙江大学2-5设一个堆栈的入栈顺序是1、2、3、4、5。
若第一个出栈的元素是4,则最后一个出栈的元素必定是:(2分)1. 12. 33. 54.1或者5作者: DS课程组单位: 浙江大学2-6为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。
该缓冲区的逻辑结构应该是?(1分)1.堆栈2.队列3.树4.图作者: DS课程组单位: 浙江大学2-7某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。
若元素a、b、c、d、e依次入此队列后再进行出队操作,则不可能得到的出队序列是:(2分)1. b a c d e2. d b a c e3. e c b a d4. d b c a e1.2和02.2和23.2和44.2和6作者: DS课程组单位: 浙江大学2-10以下不是栈的基本运算的是( )。
(2分)1.删除栈顶元素2.删除栈底元素3.判断栈是否为空4.将栈置为空栈作者: 严冰单位: 浙江大学城市学院2-11在一个链队列中,front和rear分别为头指针和尾指针,则插入一个结点s的操作为()。
(2分)1.front=front->next2.s->next=rear;rear=s3.rear->next=s;rear=s;4.s->next=front;front=s;作者: 杨斌单位: 枣庄学院2-12依次在初始为空的队列中插入元素a,b,c,d以后,紧接着做了两次删除操作,此时的队头元素是()。
(2分)1. a2. b3. c4. d作者: 杨斌单位: 枣庄学院2-13当用大小为N的数组存储顺序循环队列时,该队列的最大长度为()。
(2分)1.N2.N-13.N+14.N+2作者: 杨斌单位: 枣庄学院2-14判断一个循环队列QU(最多元素为MaxSize)为空的条件是()。
(2分)1.QU.front == QU.rear2.QU.front != QU.rear3.QU.front == (QU.rear + 1) % MaxSize4.QU.front != (QU.rear + 1) % MaxSize作者: 严冰单位: 浙江大学城市学院2-15(neuDS)在队列中存取数据元素的原则是()。
(2分)1.先进先出2.先进后出3.后进先出4.没有限制作者: 徐婉珍单位: 浙江大学2-16循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是()。
(2分)1.(rear-front+m)%m2.rear-front3.rear-front-14.rear-front作者: 杨斌单位: 枣庄学院2-17若以1234作为双端队列的输入序列,则既不能由输入受限的双端队列得到,也不能由输出受限的双端队列得到的是()。
(2分)1.12342.41323.42314.4213作者: 杨斌单位: 枣庄学院2-18(neuDS)在链栈中,进行出栈操作时( )。
(2分)1.需要判断栈是否满2.需要判断栈是否为空3.需要判断栈元素的类型4.无需对栈作任何操作作者: 徐婉珍单位: 广东东软学院2-19(neuDS)在栈中存取数据的原则是()。
(2分)1.先进先出2.先进后出3.后进后出4.没有限制作者: 徐婉珍单位: 广东东软学院2-20链式栈与顺序栈相比,一个比较明显的优点是()。
(2分)1.插入操作更加方便2.通常不会出现栈满的情况3.不会出现栈空的情况4.删除操作更加方便作者: 严冰单位: 浙江大学城市学院2-21若(a-b)*(c+d)是中序表达式,则其后序表达式是()。
(2分)1.abcd+*-2.ab-cd+*3.ab-*cd+4.a-bcd+*1.PPPOOO2.POPOPO3.POPPOO4.PPOOPO作者: DS课程组单位: 浙江大学2-22作者: DS课程组单位: 浙江大学2-23现有队列Q 与栈S,初始时Q 中的元素依次是{ 1, 2, 3, 4, 5, 6 }(1在队头),S 为空。
若允许下列3种操作:(1)出队并输出出队元素;(2)出队并将出队元素入栈;(3)出栈并输出出栈元素,则不能得到的输出序列是:(2分)1.1, 2, 5, 6, 4, 32.2, 3, 4, 5, 6, 13.3, 4, 5, 6, 1, 24.6, 5, 4, 3, 2, 1作者: 考研真题单位: 浙江大学2-24Supposed that a, b, c, d, e and f are pushed onto a stack in the given order. Assume that pushing and popping can be done alternatively, but no consecutive three poppings are allowed. Then among the following, the impossible popping sequence is: (2分)1. b c a e f d2. c b d a e f3. d c e b f a4. a f e d c b作者: DS课程组单位: 浙江大学2-25Given an empty stack S and an empty queue Q. Push elements {1, 2, 3, 4, 5, 6, 7} one by one onto S. If each element that is popped from S is enqueued onto Q immediately, and if the dequeue sequence is {4, 5, 7, 6, 3, 2, 1}, then the minimum size of S must be: (2分)1. 22. 33. 44. 5作者: Martin Ester单位: 浙江大学2-26Given the pushing sequence of a stack as {6, 5, 4, 3, 2, 1}. Among the following, the impossible popping sequence is: (2分)1. 2 3 4 1 5 62. 3 4 6 5 2 13. 5 4 3 6 1 24. 4 5 3 1 2 6作者: DS课程组单位: 浙江大学2-27下列关于栈的叙述中,错误的是:(2分)1.采用非递归方式重写递归程序时必须使用栈2.函数调用时,系统要用栈保存必要的信息3.只要确定了入栈次序,即可确定出栈次序4.栈是一种受限的线性表,允许在其两端进行操作1.仅12.仅1、2、33.仅1、3、44.仅2、3、4201712190218 李文超61.0 F(2.0) F(1.0) T(2.0) T(2.0) F(1.0) T(1.0) C(2.0) D(2.0) A(2.0) D(2.0) D(2.0) B(1.0) D(2.0) A(2.0) B(2.0)C(2.0) C(2.0) B(2.0) A(2.0) A(2.0) A(2.0) C(2.0) B(2.0) B(2.0)B(2.0) B(2.0) C(3.0) A(2.0) C D(2.0) D(2.0) B(2.0) C(2.0)。