数据结构与算法专题题库

1004. 队列的实现

单点时限: 2.0 sec

内存限制: 512 MB

请你实现一个队列,同时你有两个队列的实例对象$a,b$,我们将为实例$a,b$完成如下操作:

$pop$ $a/b$ :弹出$ a/b $队首元素

$push$ $ a/b$ $x$ :在队列$ a/b $中入队 $x$

$front$ $a/b$ :返回$ a/b $队首元素

$size$ $a/b$ :返回$ a/b $当前队列内元素个数(若队列为空则返回0)

$clear$ $a/b $ :清空$ a/b $队列

$empty$ $a/b$ :判断$ a/b $是否为空,YES表示空,NO表示非空

$operator=$ $a/b $:将队列$ a/b $赋值给另一个队列,即将$ a/b $队列中元素复制一份给另一个队列(这里的复制特定指深拷贝,参见样例解释)

$ swap $:交换两个队列。

注意,如果出现任何非法操作,则输出ERROR,并 跳过 该操作。

除了operator=clear操作外,其他操作都要求在$O(1)$时间内完成。

利用链表数据结构实现Linked Queue,自己定义链表节点。

输入格式

第一行一个整数 $Q$ ,表示接下来的操作个数;

接下来的 $Q$ 行,每行1-2个字符串,表示操作(如果操作为 $push$ ,则还会再输入一个整数 $x$)。

输出格式

对于 $front$ 、 $size$ 、 $empty$ 命令,输出对应的答案。

遇到任意非法的操作则输出ERROR,并且跳过该操作。

样例

Input
22
pop a
push a 1
push a 2
push b 3
front a
operator= a
front a
front b
push a 4
front a
pop a
front a
front b
pop a
front a
swap
front a
front b
pop b
pop b
empty b
empty a
Output
ERROR
1
1
1
1
2
1
4
1
4
ERROR
YES
NO

提示

样例解释:
在经过operator=操作时,将$a$队列复制给$b$队列,这时候$a$和$b$中队列元素都是$1$ $2$,当$a$队列插入$4$之后,$a$队列中的元素变成$1$ $2$ $4$,但是$b$队列中的元素仍然是$1$ $2$。

不限期开放

题目列表