在Python中删除链表中m个节点之后的n个节点的程序
假设我们有一个以“head”为起始节点的链表和两个整数m和n。我们必须遍历链表并删除某些节点,例如在列表中保留前m个节点,并删除第一个m个节点之后的下一个n个节点。我们执行此操作直到遇到链表的结尾。我们从头结点开始,返回修改后的链表。
链表结构如下所示 –
因此,如果输入如下所示:elements = [1, 2, 3, 4, 5, 6, 7, 8],m = 3,n = 1,则输出将为[1, 2, 3, 5, 6, 7,]
在该过程中删除3个节点之后的每个节点,因此最终链表将如下所示 –
为了解决此问题,我们将遵循以下步骤 –
- prev := head
-
curr := head
-
q := 0
-
p := 0
-
while curr is not null, do
- q := q + 1
-
if q is same as m, then
- for i in range 0 to n, do
-
if curr.next is not null, then
- curr := next of curr
- next of prev := next of curr
-
q := 0
- for i in range 0 to n, do
-
prev := next of prev
-
curr := next of curr
-
return head
示例(Python)
让我们查看以下实现以更好地理解 –