#1036. 链式队列

链式队列

Description

链表指的是将需要处理的数据对象以节点的形式,通过指针串联在一起的一种数据结构。链表中的每个节点一般由数据区域和指针区域两部分构成,其中数据区域用于保存实际需要处理的数据元素,指针区域用来保存该节点后继节点的存储地址。 img 下面我们用循环单链表来模拟队列的操作,如图a、图b所示:

(1)初始时循环单链表为空队列:data[[0,0]], 此时:head=tail=0

(2)用循环单链表模拟元素入队操作,无需考虑溢出情况。

(3)在循环单链表中实现删除队列表头元素,实际上删除的是head的后继节点。

(4)在循环单链表中添加新元素,新元素追加在tail指针后面、head指针前面。

(5)在循环单链表中,实际上仅用tail指针也可实现上述操作(因为head可表示为data[tail][1])。

给出一组有关队列的操作,输出相关队列出队信息。

请从循环单链表表头开始,依次输出单链表中各个节点的数据信息。

说明:

(1)若队列为空(head==tail),此时执行出队操作"O",则给出报错信息"ERR empty!",直接结束后续操作。

(2)可将head指向的节点看作是一个虚点,因此链表中第一个节点数据是head后面节点。

Format

Input

给出对链式队列的一组操作(I x:将元素x追加在链式队列表尾;O:删除链式队列队首元素)。

Output

第1行,若存在出队信息,则根据链式队列操作,输出队列中出队的各个节点值(用","间隔)。

若存在链式队列,接下来若干行,按单链表的逻辑次序,队首节点节点开始,依次输出链式队列中各节点的数据信息(数据值、指针域)。

Samples

I,3,I,5,I,7,O,I,11,O,I,4,I,9
3,5
7 4
11 5
4 6
9 0

Limitation

1s, 1024KiB for each test case.