删除单链表(带头结点,尾插入法建立单链表)的第i个结点
时间: 2024-05-09 18:19:50 浏览: 96
删除链表的倒数第 N 个结点.md
要删除单链表的第i个结点,需要先遍历到该结点的前一个结点,然后修改前一个结点的指针,使其指向第i+1个结点,最后删除第i个结点即可。
具体的实现过程如下:
```python
def delete_node(head, i):
"""
删除单链表的第i个结点
:param head: 单链表的头结点
:param i: 要删除的结点的索引,从1开始
:return: 删除结点后的单链表头结点
"""
if i <= 0:
return head # i小于等于0,直接返回原链表
index = 1 # 当前遍历到的结点的索引
cur = head.next # 当前遍历到的结点
pre = head # 当前遍历到的结点的前一个结点
while cur:
if index == i:
pre.next = cur.next # 修改前一个结点的指针
cur.next = None # 删除当前结点
return head
pre = cur
cur = cur.next
index += 1
return head # 遍历完整个链表,未找到对应的结点,直接返回原链表
```
其中,head为单链表的头结点,i为要删除的结点的索引,从1开始。如果i小于等于0,则直接返回原链表。遍历单链表,通过index变量记录当前遍历到的结点的索引,当index等于i时,说明找到了要删除的结点,此时修改前一个结点的指针,使其指向第i+1个结点,然后删除第i个结点即可。
如果遍历完整个链表,未找到对应的结点,则直接返回原链表。
阅读全文