天天看点

3-08. 栈模拟队列(25)(ZJU_PAT 模拟)

主题链接:http://pat.zju.edu.cn/contests/ds/3-08

设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。

所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:

(1) int IsFull(Stack S):推断堆栈S是否已满,返回1或0;

(2) int IsEmpty (Stack S ):推断堆栈S是否为空,返回1或0。

(3) void Push(Stack S, ElementType item ):将元素item压入堆栈S;

(4) ElementType Pop(Stack S ):删除并返回S的栈顶元素。

实现队列的操作,即入队void AddQ(ElementType item)和出队ElementType DeleteQ()。

输入格式说明:

输入首先给出两个正整数N1和N2,表示堆栈S1和S2的最大容量。随后给出一系列的队列操作:“A item”表示将item入列(这里如果item为整型数字);“D”表示出队操作;“T”表示输入结束。

输出格式说明:

对输入中的每一个“D”操作,输出对应出队的数字,或者错误信息“ERROR:Empty”。

假设入队操作无法运行,也须要输出“ERROR:Full”。每一个输出占1行。

例子输入与输出:

序号

输入

输出

1

2

PS:

个人认为题意有点难理解!反正我是理解了好久!

代码例如以下:

版权声明:本文博主原创文章,博客,未经同意不得转载。