Entwurf und Implementierung der Datenstruktur einer verknüpften Liste in Golang
Einführung:
Eine verknüpfte Liste ist eine allgemeine Datenstruktur, die zum Speichern einer Reihe von Knoten verwendet wird. Jeder Knoten enthält Daten und einen Zeiger auf den nächsten Knoten. In Golang können wir verknüpfte Listen mithilfe von Strukturen und Zeigern implementieren.
type Node struct { data interface{} // 存储数据 next *Node // 指向下一个节点的指针 } type LinkedList struct { head *Node // 链表头节点的指针 }
func NewLinkedList() *LinkedList { return &LinkedList{} }
next
-Zeiger auf den neuen Knoten. next
指针指向新节点。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指针 } }
next
指针设置为被删除节点的next
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 } }
next
-Zeiger auf den next
-Zeiger des gelöschten Knotens setzen. func (list *LinkedList) Traverse() { if list.head == nil { return // 链表为空 } current := list.head for current != nil { fmt.Println(current.data) current = current.next } }
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 }
Anwendungsbeispiel einer verknüpften Liste
Das obige ist der detaillierte Inhalt vonEntwerfen und implementieren Sie die Datenstruktur einer verknüpften Liste in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!