Python删除链表中的元素
删除链表中的元素需要先遍历链表,找到需要删除的元素所在节点的前一个节点,然后通过修改指针来删除节点。
以下是删除链表中元素的Python代码示例:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def removeElement(self, head: ListNode, val: int) -> ListNode:
dummy = ListNode(0) # 创建一个哑节点
dummy.next = head # 哑节点指向原链表头结点
prev, curr = dummy, head # 初始化前序节点和当前节点
while curr: # 遍历整个链表
if curr.val == val:
prev.next = curr.next # 删除当前节点
else:
prev = curr # 更新前序节点
curr = curr.next # 移动当前节点到下一个节点
return dummy.next # 返回新链表头结点
示例
例如,对于链表 1 -> 2 -> 3 -> 4 -> 5,想要删除值为3的节点,可以调用该函数如下:
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node5 = ListNode(5)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
s = Solution()
result = s.removeElement(node1, 3)
while result:
print(result.val, end=" ")
result = result.next
输出为:1 2 4 5
Golang删除链表中的元素
删除链表中元素的过程与Python类似,同样需要遍历链表,找到需要删除的元素所在节点的前一个节点,然后通过修改指针来删除节点。
以下是删除链表中元素的Golang代码示例:
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func removeElements(head *ListNode, val int) *ListNode {
dummy := &ListNode{0, head} // 创建一个哑节点
prev, curr := dummy, head // 初始化前序节点和当前节点
for curr != nil { // 遍历整个链表
if curr.Val == val {
prev.Next = curr.Next // 删除当前节点
} else {
prev = curr // 更新前序节点
}
curr = curr.Next // 移动当前节点到下一个节点
}
return dummy.Next // 返回新链表头结点
}
示例
例如,对于链表 1 -> 2 -> 3 -> 4 -> 5,想要删除值为3的节点,可以调用该函数如下:
node1 := &ListNode{1, nil}
node2 := &ListNode{2, nil}
node3 := &ListNode{3, nil}
node4 := &ListNode{4, nil}
node5 := &ListNode{5, nil}
node1.Next = node2
node2.Next = node3
node3.Next = node4
node4.Next = node5
result := removeElements(node1, 3)
for result != nil {
fmt.Printf("%d ", result.Val)
result = result.Next
}
输出为:1 2 4 5
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python/golang 删除链表中的元素 - Python技术站