问答题
请利用两个栈S1和S2来模拟一个队列。已知栈的三个运算定义如下:PUSH(ST,x):元素x入ST栈;POP(ST x):ST栈顶元素出栈,赋给变量x;Sempty(ST:判ST栈是否为空。那么如何利用栈的运算来实现该队列的三个运算:enqueue:插入一个元素入队列;dequeue:删除一个元素出队列;queue一empty:判队列为空。(请写明算法的思想及必要的注释。)【上海交通大学1999二(12分)】【厦门大学2005六(15分)】
【正确答案】正确答案:用两个栈s1和s2模拟一个队列时,s1作输入栈,逐个元素压栈,以此模拟队列元素的入队。当需要出队时,将栈s1退栈并逐个压入栈s2中,s1中最先入栈的元素在s2中处于栈顶。s2退栈,相当于队列的出队。 (1)插入一个元素入队列的核心语句段如下: if(topl==n&&!Sempty(s2)) //top1是栈s1的栈顶指针,是全局变量 (cout<<“栈满“<
【答案解析】