U283446 动态链表

题目背景

如题,进行动态链表的操作。

题目描述

要做的操作是:插入、删除和移动。 现在你手上有两条,每个节点包含一个字符串的链表`a`和`b`。为方便叙述,规定其中节点的索引(序号)从`0`开始,即第一个节点的索引为`0`。 - **插入**:在索引ii处插入一个节点,插入前索引ii及以后的节点向后移动。 - **删除**:删除索引ii处的一个节点。 - **移动**:将链表`a`或`b`的从索引ii开始的节点移动到另一张链表的尾部。

输入格式

第一行,3个正整数`n、m、k`,分别代表`a`、`b`链表的初始节点个数,以及操作的条数。 接下来`n`行,每行一个无空格的字符串,代表`a`链表中从索引00开始每个节点的数据。 接下来`m`行,每行一个无空格的字符串,代表`b`链表中从索引00开始每个节点的数据。 接下来`k`行,每行为一条操作,**一般格式**如下: 第一个数字,仅为`1、2、3`,分别代表插入、删除、移动。 第二个字符`t`,仅为`a`或`b`,代表要操作的链表。 第三个数字`i`,为要操作的节点索引。 对于**每种操作的具体格式**如下: - 插入:`1 t i data` 向链表t中索引为i处插入一个节点,数据为`data`。 - 删除:`2 t i` 删除链表t中索引为i的节点。 - 移动:`3 t i` 将链表t中从索引为i起的节点移动至另一张链表。

输出格式

先后输出经过 $k$ 次操作后,链表`a`和`b`中的数据,每行一个字符串。 链表`a`和`b`的输出数据之间加一行**空行**。 若该链表为空,请输出:`Empty!`

说明/提示

所有要保存的字符串都无空格。 字符串长度不超过 $30$。 假如链表`a`当前的长度为 $n$ ,那么其中包含索引为 $0$ 到 $n−1$ 的节点。此时,输入数据保证: - 对于插入操作,索引范围为 $[0,n]$ - 对于删除和移动操作,索引范围为 $[0,n−1]$ 无需关心 $n,m,k$ 的大小,保证内存空间足够。