Home  >  Article  >  Backend Development  >  How to delete linked list elements using Go language

How to delete linked list elements using Go language

PHPz
PHPzOriginal
2023-04-10 14:21:49624browse

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.

  1. Define linked list structure

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.

  1. Deleting elements in a linked list

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.

  1. Complete code example

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.

  1. Summary
    Through the above explanation, we can find that linked lists can be implemented in Go language through a series of structures and pointers. The basic operation of deleting linked list elements can be divided into three steps: search, update pointer and deletion. I hope this article can help you understand and master linked list operations in Go language.

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn