📅  最后修改于: 2023-12-03 15:40:53.581000             🧑  作者: Mango
本程序实现了在给定位置删除链表节点的操作。链表是一种常用的数据结构,它由若干个节点组成,每个节点包含了数据以及指向下一个节点的指针。删除链表节点是常见的操作之一,本程序可以在任意位置删除链表节点。
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delete_node(head: ListNode, pos: int) -> ListNode:
if not head:
return
if pos == 1:
return head.next
cur_node = head
for _ in range(pos-2):
if cur_node is None:
break
cur_node = cur_node.next
if not cur_node:
return head
if not cur_node.next:
return head
cur_node.next = cur_node.next.next
return head
本程序实现了一个链表节点的定义和一个删除链表节点的函数。ListNode类定义了一个链表节点,其包含val和next两个属性,其中val表示节点的数据,next表示指向下一个节点的指针。
delete_node函数实现了在给定位置pos删除链表节点的操作。参数head表示链表的头结点,pos表示要删除的节点在链表中的位置。如果链表为空,直接返回空;如果要删除的节点是头结点,直接返回头结点的下一个节点。之后遍历链表,找到要删除的节点的前一个节点,然后修改节点的指针即可删除节点。如果要删除的节点的位置超出了链表的长度,则直接返回头结点。
为了便于演示,我们首先创建一个链表,然后在位置2删除一个节点,然后输出删除后的链表。代码如下:
head = ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5)))))
pos = 2
new_head = delete_node(head, pos)
cur_node = new_head
while cur_node:
print(cur_node.val, end=' ')
cur_node = cur_node.next
输出结果为:1 3 4 5
。可以看出成功删除了位置为2的节点。