Lernen Sie die Implementierungsmethode einer einfach verknüpften Liste in der Go-Sprache von Grund auf.
Beim Erlernen von Datenstrukturen und Algorithmen ist die einfach verknüpfte Liste eine der grundlegenden und wichtigen Datenstrukturen. In diesem Artikel wird erläutert, wie Sie mithilfe der Go-Sprache eine einfach verknüpfte Liste implementieren, und den Lesern anhand spezifischer Codebeispiele helfen, diese Datenstruktur besser zu verstehen.
Eine einfach verknüpfte Liste ist eine lineare Datenstruktur, die aus einer Reihe von Knoten besteht. Jeder Knoten enthält Daten und einen Zeiger auf den nächsten Knoten. Der Zeiger des letzten Knotens zeigt auf null.
Einfach verknüpfte Listen unterstützen normalerweise mehrere grundlegende Operationen, einschließlich Einfügen, Löschen und Suchen. Jetzt werden wir diese Operationen Schritt für Schritt umsetzen.
Zuerst müssen wir die Knotenstruktur einer einfach verknüpften Liste definieren:
type Node struct { data interface{} next *Node }
In der obigen Struktur wird das Feld data
zum Speichern der Daten des Knotens verwendet , next Das Feld
ist ein Zeiger auf den nächsten Knoten. data
字段用于存储节点的数据,next
字段是指向下一个节点的指针。
接下来,我们需要定义一个LinkedList
LinkedList
-Struktur definieren, um eine einfach verknüpfte Liste darzustellen und einige grundlegende Operationsmethoden bereitzustellen: type LinkedList struct { head *Node } func NewLinkedList() *LinkedList { return &LinkedList{} }
func (list *LinkedList) Insert(data interface{}) { newNode := &Node{data: data} if list.head == nil { list.head = newNode } else { newNode.next = list.head list.head = newNode } }
func (list *LinkedList) Delete(data interface{}) { if list.head == nil { return } if list.head.data == data { list.head = list.head.next return } prev := list.head current := list.head.next for current != nil { if current.data == data { prev.next = current.next return } prev = current current = current.next } }
func (list *LinkedList) Search(data interface{}) bool { current := list.head for current != nil { if current.data == data { return true } current = current.next } return false }
package main import "fmt" type Node struct { data interface{} next *Node } type LinkedList struct { head *Node } func NewLinkedList() *LinkedList { return &LinkedList{} } func (list *LinkedList) Insert(data interface{}) { newNode := &Node{data: data} if list.head == nil { list.head = newNode } else { newNode.next = list.head list.head = newNode } } func (list *LinkedList) Delete(data interface{}) { if list.head == nil { return } if list.head.data == data { list.head = list.head.next return } prev := list.head current := list.head.next for current != nil { if current.data == data { prev.next = current.next return } prev = current current = current.next } } func (list *LinkedList) Search(data interface{}) bool { current := list.head for current != nil { if current.data == data { return true } current = current.next } return false } func main() { list := NewLinkedList() list.Insert(1) list.Insert(2) list.Insert(3) fmt.Println(list.Search(2)) // Output: true list.Delete(2) fmt.Println(list.Search(2)) // Output: false }
Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie einfach verknüpfte Listen in der Go-Sprache von Grund auf implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!