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

数据结构练习第三章栈和队列一、选择题1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.向顺序栈中压入新元素时,应当()。
A.先移动栈顶指针,再存入元素 B.先存入元素,再移动栈顶指针C.先后次序无关紧要 D.同时进行3.允许对队列进行的操作有( )。
A. 对队列中的元素排序B. 取出最近进队的元素C. 在队头元素之前插入元素D. 删除队头元素4.用链接方式存储的队列,在进行插入运算时( ).A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改5.设用链表作为栈的存储结构则退栈操作()。
A. 必须判别栈是否为满B. 必须判别栈是否为空C. 判别栈元素的类型D.对栈不作任何判别6.设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为()。
A.front->next=s;front=s;B. s->next=rear;rear=s;C. rear->next=s;rear=s;D. s->next=front;front=s;7.设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为()。
A.top=top+1;B. top=top-1;C. top->next=top;D. top=top->next;8.队列是一种()的线性表。
A. 先进先出B. 先进后出C. 只能插入D. 只能删除9.设输入序列1、2、3、…、n经过栈作用后,输出序列中的第一个元素是n,则输出序列中的第i个输出元素是()。
A. n-iB. n-1-iC. n+l -iD.不能确定10.设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为()。
A. 5,3,4,6,1,2B. 3,2,5,6,4,1C. 3,1,2,5,4,6D. 1,5,4,6,2,311.队列的删除操作是在()进行。
栈和队列_习题

第三章栈和队列一、单项选择题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入队时执行的操作为( )。
数据结构第3章栈和队列练习题

数据结构第3章栈和队列练习题第三章栈和队列一、多项选择题1.以下不是栈的基本运算的是()a)删除堆栈的顶部元素b)删除堆栈的底部元素C)判断堆栈是否为空d)将堆栈设置为空堆栈2.若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是()a)1,4,3,2b)2,3,4,1c)3,1,4,2d)3,4,2,13.堆栈和队列的共同点()a)都是先进先出b)都是后进先出c)仅在端点d)插入和删除元素没有任何共同之处4.若已知一个进栈序列是1,2,3,……,n,其输出序列是p1,p2,vp3,……pn,若p1=n,则pi(1a) ib)n-ic)n-i+1d)不确定5.判断堆栈st(最大大小)为空的条件是(a)st->Top==1b)st->Top==1c)st->top!=maxsize-1d)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-。
下一个=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,1b)1,2,3,4c)1,4,3,2d)3,2,4,111.将初始输入序列设置为1,2,3,4,5,并使用堆栈生成输出序列。
栈和队列习题

第三章栈和队列练习题一、单项选择题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. 对于栈操作数据的原则是()。
A. 先进先出B. 后进先出C. 后进后出D. 不分顺序 3. 最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。
A. (rear+1) MOD n=frontB. rear=frontC.rear+1=front D. (rear-l) MOD n=front4当利用大小为n的数组顺序存储一个栈时,假定用top= =n表示栈空,则向这个栈插入一个元素时首先应执行语句修改top指针。
A.top++ B.top-- C.top=0 D.top5. 若已知一个栈的入栈序列是1,2,3,?,n,其输出序列为p1,p2,p3,?,pN,若pN是n,则pi是( )。
A. iB. n-iC. n-i+1D. 不确定 6. 一个递归算法必须包括()。
A. 递归部分B. 终止条件和递归部分C. 迭代部分D.终止条件和迭代部分 7. 执行完下列语句段后,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. 无限递归8. 设栈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 9. 栈和队列的共同点是()。
A. 都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素 D. 没有共同点10. 设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。
A.线性表的顺序存储结构 B. 队列 C. 线性表的链式存储结构 D. 栈 11. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时( )。
数据结构第三章栈和队列练习及答案

一、选择题一、选择题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.以下不是栈的基本运算的是( )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.先进先出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.跟踪以下代码,显示每次调用后栈中的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章栈与队列练习题
一、选择题
1、栈结构通常采用的两种存储结构是( A )。
A、顺序存储结构和链表存储结构
B、散列和索引
C、链表存储结构和数组
D、线性链表和非线性存储
2、设栈ST用顺序存储结构表示,则栈ST为空的条件是(B)
A、ST.top-ST.base<>0
B、ST.top-ST.base==0
C、ST.top-ST.base<>n
D、ST.top-ST.base==n
3、向一个栈顶指针为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,1
B、1,2,3,4
C、1,4,3,2
D、3,2,4,1
9、循环队列SQ采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front和rear,则判定此循环队列为满的条件是(C)//不懂啊!!!
A、Q.front==Q.rear
B、Q.front!=Q.rear
C、Q.front==(Q.rear+1)%n
D、Q.front!=(Q.rear+1)%n
11、用单链表表示的链式队列的队头在链表的(A)位置
A、链头
B、链尾
C、链中
12、判定一个链队列Q(最多元素为n个)为空的条件是( A)
A、Q.front==Q.rear
B、Q.front!=Q.rear
C、Q.front==(Q.rear+1)%n
D、Q.front!=(Q.rear+1)%n
14、在一个链队列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、队头尾指针都可能要修改。
16、栈和队列的共同点是(C)
A、都是先进后出
B、都是先进先出
C、只允许在端点处插入和删除元素
D、没有共同点
18、设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4,s6,s5,s1,则栈的容量至少应该是(B)
A、2
B、 3
C、 5
D、 6
20、设有一顺序栈已经含有3个元素,如图3.1所示元素a4正等待进栈。
下列不可能出现的出栈序列是(A)
0 maxsize-1
A、a3,a1,a4,a2
B、a3,a2,a4,a1
C、a3,a4,a2,a1
D、a4,a3,a2,a1
a1 a2 Top
a3
图3.1
二、判断题
1、在顺序栈栈满情况下,不能做进栈运算,否则会产生“上溢”。
T
2、链栈与顺序栈相比的一个优点是链栈插入和删除操作更加方便。
T
3、若一个栈的输入序列为1,2,3,…,n,其输出序列的第一个元素为n,
则其输出序列的每个元素a
i 一定满足a
i
=i+1(i=1,2, …,n)。
F
4、在链队列中,即使不设置尾指针也能进行入队操作。
F
5、在对链队列(带头指针)做出队操作时,不会改变front指针的值。
F
6、循环队列中元素个数为rear-front。
F
7、一个栈的输入序列是1,2,3,4,则在栈的输出序列中可以得到4,3,1,2。
F,有5种情况
8、一个栈的输入序列是1,2,3,4,则在栈的输出序列中可以得到1,2,3,4。
T
9、若以链表作为栈的存储结构,则进栈需要判断栈是否满。
F
10、若以链表作为栈的存储结构,则出栈需要判断栈是否空。
T
三、填空题
1、栈的特点是(后进先出),队列的特点是(先进先出)。
2、线性表、栈、队列都是(存储)结构,可以在线性表的(任意)位置插入和删除元素;对于栈只能在(栈顶top)插入和删除元素;对于队列只能在(队尾)插入元素和在(队头)位置删除元素。
3、有程序如下,则此程序的输出结果(栈的元素类型是SelemType为char)是()。
//不懂!!!
Void main()
{stack s; char x,y; initstack (s); x=’c’;y=’k’;
push(s,x);push(s,’a’);push(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);}
4、在栈顶指针为HS的链栈中,判定栈空的条件是()。
5、向栈中压入元素的操作是先()后()。
6、对栈进行退栈操作是先()后()。
7、用循环链表表示的队列长度为n,若只设头指针,则出队和入队的时间复杂度分别是()和();若只设尾指针,则出队和入队的时间复杂度分别是()和()。
8、从循环队列中删除一个元素时,其操作是()。
12、设栈S和队列Q的出始状态为空,元素a,b,c,d,e,f依次通过栈S,一个元素出栈后即进入队列Q。
若这6个元素出队列的顺序是b,d,c,f,e,a 则栈S的容量至少应该是()。
13、有程序如下,则此程序的输出结果(队列的元素类型是QSelemType为char)是()。
Void main()
{char x=’e’,y=’c’;
enqueue(q,’h’);enqueue(q,’r’);enqueue(q,y);dequeue(q,x);enq ueue(q,x);degueue(q,x);
enqueue(q,’a’);
while(!queueempty(q)){dequeue(q,y);printf(y);}
printf(x);}
四、简答题
1、对于堆栈,给出三个输入项A,B,C,如果输入项序列为ABC,试给出
全部可能的输出序列,并写出每种序列对应的操作。
例如:A进B进C
进C出B出A出,产生的序列为CBA。
2、简述以下算法的功能(栈的元素类型是SelemType为int)。
(1)status algo1(stack s)
{int
I,n,a[255];n=0;while(!stackempty(s)){n++;pop(s,a[n]);}
for(I=1;I<=n;I++)push(s,a[I]);}
(2)status algo2(stack s,int e)
{stack t;int
d;initstack(t);while(!stackempty(s)){pop(s,d);if(d!=e)pu
sh(t,d);}
while(!stackempty(t)){pop(t,d);push(s,d);}}
3、内存中一片连续空间(不妨假设地址从0到m-1)提供给两个栈s1和
s2使用,怎样分配这部分存储空间,使得对任一栈仅当这部分空间全满
时才发生溢出。
6. 假设Q[0,9]是一个非循环线性队列,初始状态为front=rear=0,画出做完
下列操作后队列的头尾指针的状态变化情况,如果不能入队,请指出其元
素,并说明理由。
d,e,b,g,h入队 d,e出队 I,j,k,l,m入队 b出队 n,o,p,q,r入队。