Home >Backend Development >Golang >How to delete linked list elements using Go language
In the Go language, deleting linked list elements is a basic operation. The structure of a linked list cannot be directly manipulated through indexing like an array, so you need to find the element that needs to be deleted in the linked list and then delete it from the linked list.
This article will introduce the basic operations of how to delete linked list elements using Go language.
In Go language, linked lists can be implemented through a series of structures and pointers. We usually use a node structure to represent a single element in a linked list.
type ListNode struct {
Val int Next *ListNode
}
This structure contains two member variables: Val and Next. Val is the actual value of the node and Next is the pointer to the next node.
Deleting elements in a linked list can be divided into three steps. First, we need to find the element that needs to be deleted. Second, we need to update the pointer to that element to point to the next element. Finally, we delete the element that needs to be deleted from the linked list.
func deleteNode(head ListNode, val int) ListNode {
// 如果是删除头节点,直接返回下一个节点作为新的头节点 if head.Val == val { return head.Next } // 定义两个指针用于遍历链表 pre, cur := head, head.Next for cur != nil { if cur.Val == val { // 删除当前节点 pre.Next = cur.Next break } // 将指针移动到下一个节点 pre, cur = cur, cur.Next } return head
}
In this function, we use two pointers pre and cur to traverse the linked list. If a node that needs to be deleted is found, the pointer to that node is updated to point to the next node.
The following is a complete code example, which includes the structure that defines the linked list and the function to delete the linked list elements.
func deleteNode(head ListNode, val int) ListNode {
// 如果是删除头节点,直接返回下一个节点作为新的头节点 if head.Val == val { return head.Next } // 定义两个指针用于遍历链表 pre, cur := head, head.Next for cur != nil { if cur.Val == val { // 删除当前节点 pre.Next = cur.Next break } // 将指针移动到下一个节点 pre, cur = cur, cur.Next } return head
}
type ListNode struct {
Val int Next *ListNode
}
func main() {
// 创建一个链表 l1 := &ListNode{1, nil} l2 := &ListNode{2, nil} l3 := &ListNode{3, nil} l4 := &ListNode{4, nil} l5 := &ListNode{5, nil} l1.Next = l2 l2.Next = l3 l3.Next = l4 l4.Next = l5 // 删除链表元素 head := deleteNode(l1, 3) // 打印链表 for head != nil { fmt.Println(head.Val) head = head.Next }
}
In the above example, we created a linked list containing 5 elements. Then, we use the deleteNode() function to delete the element with value 3 from the linked list. Finally, we iterate through the entire linked list and print the value of each element.
The above is the detailed content of How to delete linked list elements using Go language. For more information, please follow other related articles on the PHP Chinese website!