Home > Backend Development > Golang > Design and implement the data structure of linked list in Golang

Design and implement the data structure of linked list in Golang

王林
Release: 2024-01-28 09:36:22
Original
595 people have browsed it

Design and implement the data structure of linked list in Golang

Design and implementation of linked list data structure in Golang

Introduction:
Linked list is a common data structure used to store a series of nodes. Each node contains data and a pointer to the next node. In Golang, we can implement linked lists by using structures and pointers.

  1. Design and structure definition of linked list
    In Golang, we can use structures and pointers to define the nodes of the linked list and the structure of the linked list itself. The node structure contains a data field and a pointer to the next node.
type Node struct {
    data interface{} // 存储数据
    next *Node       // 指向下一个节点的指针
}

type LinkedList struct {
    head *Node // 链表头节点的指针
}
Copy after login
  1. Initialization of linked list
    When creating a linked list, we need to initialize an empty linked list. When initializing the linked list, the head node pointer of the linked list is empty.
func NewLinkedList() *LinkedList {
    return &LinkedList{}
}
Copy after login
  1. Insertion into a linked list
    The insertion operation into a linked list adds a node to the end of the linked list. First, we need to create a new node and assign data to it. Then, we find the last node of the linked list and point its next pointer to the new node.
func (list *LinkedList) Insert(data interface{}) {
    newNode := &Node{data: data} // 创建新节点
    if list.head == nil {        // 链表为空
        list.head = newNode     // 直接将新节点设为头节点
    } else {
        current := list.head
        for current.next != nil {
            current = current.next // 找到链表的最后一个节点
        }
        current.next = newNode // 将新节点链接到最后一个节点的next指针
    }
}
Copy after login
  1. Deletion of linked list
    The deletion operation of linked list will find and delete the specific node in the linked list. First, we need to find the previous node of the node to be deleted and set its next pointer to the next pointer of the deleted node.
func (list *LinkedList) Delete(data interface{}) {
    if list.head == nil {
        return // 链表为空,无需删除
    }
    if list.head.data == data { // 头节点需要删除
        list.head = list.head.next
        return
    }
    current := list.head
    for current.next != nil {
        if current.next.data == data { // 找到要删除节点的前一个节点
            current.next = current.next.next
            return
        }
        current = current.next
    }
}
Copy after login
  1. Traversal of a linked list
    The traversal operation of a linked list will print all nodes in the linked list.
func (list *LinkedList) Traverse() {
    if list.head == nil {
        return // 链表为空
    }
    current := list.head
    for current != nil {
        fmt.Println(current.data)
        current = current.next
    }
}
Copy after login
  1. Usage examples of linked lists
func main() {
    list := NewLinkedList() // 创建一个新链表
    list.Insert(1)          // 插入节点1
    list.Insert(2)          // 插入节点2
    list.Insert(3)          // 插入节点3

    list.Traverse() // 遍历链表,输出: 1 2 3

    list.Delete(2)  // 删除节点2
    list.Traverse() // 遍历链表,输出: 1 3
}
Copy after login

Conclusion:
In Golang, by using structures and pointers, we can easily implement linked lists data structure. The insertion, deletion and traversal operations of linked lists are also very simple and clear, and can be easily applied to practical problems.

The above is the detailed content of Design and implement the data structure of linked list in Golang. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template