Conception et mise en œuvre d'une structure de données de liste chaînée dans Golang
Introduction :
Une liste chaînée est une structure de données courante utilisée pour stocker une série de nœuds. Chaque nœud contient des données et un pointeur vers le nœud suivant. Dans Golang, nous pouvons implémenter des listes chaînées en utilisant des structures et des pointeurs.
type Node struct { data interface{} // 存储数据 next *Node // 指向下一个节点的指针 } type LinkedList struct { head *Node // 链表头节点的指针 }
func NewLinkedList() *LinkedList { return &LinkedList{} }
next
vers le nouveau nœud.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
sur le pointeur
next
du nœud supprimé.
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 }
Exemple d'utilisation de liste chaînée
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!