#D1188. 队列和栈

队列和栈

题目描述

队列和栈是两种重要的数据结构,它们具有 push kpop 操作。push k 是将数字 kk 加入到队列或栈中,pop 则是从队列和栈取一个数出来。队列和栈的区别在于取数的位置是不同的。

队列是先进先出的:把队列看成横向的一个通道,则 push k 是将 kk 放到队列的最右边,而 pop 则是从队列的最左边取出一个数。

栈是后进先出的:把栈也看成横向的一个通道,则 push k 是将 kk 放到栈的最右边,而 pop 也是从栈的最右边取出一个数。

假设队列和栈当前从左至右都含有 1122 两个数,则执行 push 5pop 操作示例图如下:

          push 5          pop
队列 1 2  ------->  1 2 5 ------>  2 5
          push 5          pop
栈   1 2  ------->  1 2 5 ------>  1 2

现在,假设队列和栈都是空的。给定一系列 push kpop 操作之后,输出队列和栈中存的数字。若队列或栈已经空了,仍然接收到 pop 操作,则输出 error

输入格式

第一行为 mm,表示有 mm 组测试输入,m<100m<100

每组第一行为 nn,表示下列有 nnpush kpop 操作,n<150n<150

接下来 nn 行,每行是 push k 或者 pop,其中 kk是一个整数。

输入保证同时在队列或栈中的数不会超过 100100 个。

输出格式

对每组测试数据输出两行,正常情况下,第一行是队列中从左到右存的数字,第二行是栈中从左到右存的数字。

若操作过程中队列或栈已空仍然收到 pop,则在一行中输出 error。输出应该共 2m2m 行。

2
4
push 1
push 3
pop
push 5
1
pop
3 5
1 5
error
error