linkedlist删除倒数
时间: 2023-11-16 17:05:19 浏览: 31
要删除链表中倒数第n个节点,可以使用双指针的方法。首先,我们可以定义两个指针,一个快指针和一个慢指针。让快指针先移动n个节点,然后让慢指针和快指针同时移动,直到快指针到达链表的末尾。
当快指针到达末尾时,慢指针将指向倒数第n个节点的前一个节点。然后我们就可以删除倒数第n个节点了。
下面是使用双指针删除链表中倒数第n个节点的示例代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def removeNthFromEnd(head, n):
dummy = ListNode(0)
dummy.next = head
fast = slow = dummy
for _ in range(n):
fast = fast.next
while fast.next:
fast = fast.next
slow = slow.next
slow.next = slow.next.next
return dummy.next
```
在这个示例代码中,我们创建了一个虚拟节点dummy,并让其next指向链表的头部。然后定义了快指针fast和慢指针slow都指向dummy。
我们首先将快指针fast向前移动n个节点。然后同时移动快指针fast和慢指针slow,直到快指针fast到达链表的末尾。此时,慢指针slow指向倒数第n个节点的前一个节点。
最后,我们将慢指针slow的next指向下一个节点的下一个节点,实现删除倒数第n个节点的操作。