#A5402P. 双向链表删除节点(删)

双向链表删除节点(删)

题目描述

给定一个长度为 nn 的双向链表,要求删除链表中的第 kk 个节点,并输出删除后的双向链表(从头到尾顺序输出)。

  • 节点编号从头节点开始算起,编号为 1,2,3,,n1, 2, 3, \dots, n
  • 如果 k0k \le 0 或者 k>nk > n(即链表中没有第 kk 个节点),则判定为无效操作,不进行任何删除,链表保持原样。
  • 如果操作后整个双向链表为空,请输出单词 empty

输入格式

第一行包含一个整数 nn (1n105)(1 \le n \le 10^5),表示初始双向链表的长度。 第二行包含 nn 个整数,表示初始双向链表从头到尾各个节点的值。 第三行包含一个整数 kk (105k105)(-10^5 \le k \le 10^5),表示需要删除的节点正向序号。

输出格式

输出一行整数,包含操作后的双向链表从头到尾所有节点的值,数字之间用一个空格隔开。如果链表被删空,输出 empty

样例输入 1

5
10 20 30 40 50
3

样例输出 1

10 20 40 50

样例说明 1

需要删除第 3 个节点(值为 30)。删除后,节点 20 的后继指针指向 40,节点 40 的前驱指针指向 20。最终链表为 10 20 40 50

样例输入 2

1
99
1

样例输出 2

empty

样例说明 2

链表只有一个节点,删除第 1 个节点后链表为空,因此输出 empty

样例输入 3

4
1 2 3 4
6

样例输出 3

1 2 3 4

样例说明 3

链表只有 4 个节点,要删除第 6 个节点属于越界无效操作,链表保持原样。