用自定义函数实现删除单链表中第i个位置上的元素
时间: 2024-05-15 08:20:03 浏览: 18
以下是Python代码实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def deleteNode(head: ListNode, i: int) -> ListNode:
if not head or i <= 0: # 如果链表为空或i小于等于0,直接返回原链表头结点
return head
if i == 1: # 如果i为1,删除头结点并返回新的头结点
return head.next
cur = head
for _ in range(i-2): # 找到要删除的节点的前一个节点
if not cur.next: # 如果已经到达链表末尾,直接返回原链表头结点
return head
cur = cur.next
if not cur.next: # 如果要删除的节点不存在,直接返回原链表头结点
return head
cur.next = cur.next.next # 删除节点
return head
```
其中,ListNode类表示链表节点,deleteNode函数接受两个参数:链表头结点head和要删除的位置i,返回删除节点后的链表头结点。在函数中,首先判断链表是否为空或i是否小于等于0,如果是则直接返回原链表头结点;如果i为1,则直接删除头结点并返回新的头结点。如果要删除的位置大于1,则需要找到要删除的节点的前一个节点,将其next指针指向要删除节点的下一个节点,完成节点的删除。最后返回链表头结点即可。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![.zip](https://img-home.csdnimg.cn/images/20210720083646.png)