第一种情况:在链表中删除一个节点,删除一个节点,首先要找到要被删除节点的前驱节点,然后把这个前驱节点的 next指针指向被删除节点的下一个节点。这样就能把被删除节点从链表中摘除了。
Go
//还是先创建一条单链表
head := createLinkedList([]int{1,2,3,4,5})
//删除第四个节点,首先找到前驱节点
p := head
for i := 0; i < 2; i++ {
p = p.next
}
p.next = p.next.next
第二种情况:在单链表尾部删除元素
Go
// 创建一条单链表
head := createLinkedList([]int{1, 2, 3, 4, 5})
// 删除尾节点
p := head
// 找到倒数第二个节点
for p.next.next != nil {
p = p.next
}
// 此时 p 指向倒数第二个节点
// 把尾节点从链表中摘除
p.next = nil
第三种情况:在单链表头部删除元素
Go
// 创建一条单链表
head := createLinkedList([]int{1, 2, 3, 4, 5})
// 删除头结点
head = head.Next
// 现在链表变成了 2 -> 3 -> 4 -> 5