在下面Test函数中,S是一个栈,Push和Pop分别是入栈和出栈操作,InitStack是初始化栈操作;Q是一个队列,EnQueue和DeQueue分别是入队和出队操作;StackEmpty是判断栈是否为空,QueueEmpty是判断队列是否为空。已知队列Q中从队头到队尾依次有四个元素:4,3,2,1,写出执行Test()之后,队列Q中的元素从队头到队尾依次是什么。(4分)
void
A: Queue
B: Queue
C: itStack
D: p
E: sh
F: ()){
G: (,x);
H: (,x);
}
}
I: (eue &Q){
J: ;int
x;
K: ();
while(!QueueEmpty
L: (,x);
}
while(!StackEmpty
M: ()){
N: (,x);
O: ack
P: st
void
A: Queue
B: Queue
C: itStack
D: p
E: sh
F: ()){
G: (,x);
H: (,x);
}
}
I: (eue &Q){
J: ;int
x;
K: ();
while(!QueueEmpty
L: (,x);
}
while(!StackEmpty
M: ()){
N: (,x);
O: ack
P: st
举一反三
- 编程:已知Q是一个非空队列,S是一个空栈。编写算法,仅用队列和栈的ADT函数和少量工作变量,将队列Q的所有元素逆置。栈的ADT函数有:void makeEmpty(SqStack s); 置空栈void push(SqStack s,ElemType e); 元素e入栈ElemType pop(SqStack s); 出栈,返回栈顶元素int isEmpty(SqStack s); 判断栈空队列的ADT函数有:void enQueue(Queue q,ElemType e); 元素e入队ElemType deQueue(Queue q); 出队,返回队头元素int isEmpty(Queue q); 判断队空
- 已知Q是一个非空队列,S是一个空栈。仅用队列和栈的ADT函数和少量工作变量,使用 PASCAl或C语言编写一个算法,将队列Q中的所有元素逆置。的ADT函数有:makeEmpty ( s: stack ) ;//置空栈push ( s :stack ; value:datatype ) ;//新元素value入栈pop ( s : stack ) :datatype;//出栈,返回栈顶值isEmpty ( s :stack ) : Boolean ;//判栈空否队列的ADT函数有:enQueue( q:queue:value:datatype);//元素value进队deoueue (q:queue ) : datatype ;//出队列,返回队头值isEmpty(q:queue ) : boolean ;//判队列空否
- 设栈s和队列q均为空,先将a,b,c,d依次进队列q,再将队列q中顺次出队的元素进栈s,直至队空。再将栈s中的元素逐个出栈,并将出栈元素顺次进队列q,则队列q的状态是
- 现有队列 Q 与栈 S,初始时 Q 中的元素依次是{ 1, 2, 3, 4, 5, 6 }(1在队头),S 为空。若允许下列3种操作:(1)出队并输出出队元素;(2)出队并将出队元素入栈;(3)出栈并输出出栈元素,则不能得到的输出序列是:()
- 【简答题】简述以下算法的功能(栈和队列的元素类型均为int)。 void algo3(Queue &Q){ Stack S; int d; InitStack(S); while(!QueueEmpty(Q)) { DeQueue(Q, d); Push(S, d); } while(!StackEmpty(S)) { Pop(S, d); EnQueue(Q, d); } }