数据结构按位置删除按位置删除链表中元素函数
时间: 2024-11-25 13:18:30 浏览: 8
数据结构来去除链表中的重复元素-java.zip
在链表数据结构中,如果你想按照特定的位置删除元素,首先需要遍历链表找到目标位置对应的节点。假设我们有一个单向链表`ListNode`,其中包含一个`val`字段存储值,以及一个`next`指针指向下一个节点。
以下是一个简单的步骤描述:
1. 定义一个函数`delete_at_position(lst: ListNode, position: int)`,接收链表的头节点`lst`和要删除的索引`position`作为输入。
2. 遍历链表,从头节点开始计数,如果遇到第`position`个节点(包括第`position`),则找到了待删除节点。
3. 如果`position`等于0,表示删除头节点,直接更新链表的头节点为当前头节点的下一个节点,`lst = lst.next`。
4. 否则,如果`position`大于0,找到当前节点后,将它的`next`指向前一个节点的`next`,即`current.next = current.next.next`,这使得该节点及其后续节点被“跳跃”过,从而实现了删除。
5. 返回新的链表头节点`lst`。
```python
def delete_at_position(lst: ListNode, position: int) -> ListNode:
if not lst or position < 0:
return lst
# 特殊处理删除头节点的情况
if position == 0:
lst = lst.next
return lst
prev = None
curr = lst
count = 0
while curr and count < position - 1:
prev = curr
curr = curr.next
count += 1
if curr is None:
return lst # 越界情况,未到达指定位置就结束遍历
prev.next = curr.next
return lst
```
阅读全文