5267 - 链表合并与分割

题目描述

本题要求你处理单链表、双链表和循环链表的合并与分割操作。你需要实现以下功能:

  1. 将两个单链表合并成一个有序的单链表。

  2. 将一个双链表按指定值分割成两部分,使得前半部分的所有3节点值小于指定值,后半部分的所有节点值大于等于指定值。

  3. 合并两个循环链表为一个新的循环链表。

输入

输入包含多组操作,每组操作由一个操作类型和相应的数据组成,具体如下:

操作 1:合并两个单链表

第一行输入 1,表示此操作类型。

第二行输入第一个单链表的节点数量 (n_1),接着输入 (n_1) 个整数,表示第一个单链表的节点值。

第三行输入第二个单链表的节点数量 (n_2),接着输入 (n_2) 个整数,表示第二个单链表的节点值。

操作 2:分割双链表

第一行输入 2,表示此操作类型。

第二行输入双链表的节点数量 n,接着输入 n 个整数,表示双链表的节点值。

第三行输入一个整数 x,表示分割的指定值。

操作 3:合并两个循环链表

第一行输入 3,表示此操作类型。

第二行输入第一个循环链表的节点数量 (m_1),接着输入 (m_1) 个整数,表示第一个循环链表的节点值。

第三行输入第二个循环链表的节点数量 (m_2),接着输入 (m_2) 个整数,表示第二个循环链表的节点值。

输出

根据不同的操作类型,输出相应的结果:

操作 1:合并两个单链表

输出合并后有序单链表的所有节点值,以空格分隔。

操作 2:分割双链表

输出分割后双链表的所有节点值,以空格分隔。

操作 3:合并两个循环链表

输出合并后循环链表的所有节点值,以空格分隔,从合并后链表的头节点开始输出。

样例

输入

1
3 1 3 5
2 2 4
2
4 3 1 4 2
3
3
2 7 8
3 9 10 11

输出

1 2 3 4 5
1 2 3 4
7 8 9 10 11
说明

操作组数不超过 10 组。对于单链表和双链表,节点数量 (n, n_1, n_2) 满足 (1 ≤ n, n_1, n_2 ≤ 100)。对于循环链表,节点数量 (m_1, m_2) 满足 (1 ≤ m_1, m_2 ≤ 100)。所有节点值的范围是 (-1000 ≤) 节点值 (≤ 1000)。分割指定值 x 的范围是 (-1000 ≤ x ≤ 1000)。

题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 12
通过人数 10
金币数量 1 枚
难度 未标记


上一题 下一题