Linked List est une structure de données commune. Elle se compose d'une série de nœuds. Chaque nœud contient deux attributs clés : un champ de données (Data) et un champ de pointeur (Next). Parmi eux, le champ de données est utilisé pour stocker les données réelles et le champ de pointeur pointe vers le nœud suivant. De cette manière, les listes chaînées stockent les données de manière flexible et adaptée à de nombreux scénarios d'application différents.
Dans le langage Go, la structure de liste chaînée est également bien prise en charge. La bibliothèque standard intégrée de Go fournit le package conteneur/list, qui fournit une implémentation d'une liste doublement chaînée (Double Linked List) qui peut être appelée lorsque nous écrivons du code dans le langage Go. Dans cet article, nous explorerons comment implémenter des opérations de liste chaînée à l'aide du package conteneur/list.
Utilisation de base du package conteneur/liste
Tout d'abord, nous devons comprendre l'utilisation de base du package conteneur/liste. Ce package fournit une structure List qui contient deux pointeurs vers la tête et la queue des éléments. En même temps, cette structure implémente l'interface standard d'une liste doublement chaînée, comprenant PushBack(), PushFront(), InsertBefore(), InsertAfter(), Remove() et d'autres méthodes.
Voici quelques exemples d'opérations de liste chaînée courantes :
l := list.New()
l.PushBack("Go") l.PushBack("Java")
l.PushFront("Python")
elem := l.Back() l.InsertBefore("C++", elem)
l.InsertAfter("JavaScript", elem)
l.Remove(elem)
Insérer des éléments en tête de la liste chaînée
l.PushFront(1) l.PushFront(2)
Insérer des éléments au milieu ou à la fin de la liste chaînée
elem := l.Back() // 获取链表尾部元素 l.InsertBefore(99, elem) // 在尾部元素前插入新元素
head := l.Front() l.Remove(head)
// 找到需要删除的元素 target := 2 for e := l.Front(); e != nil; e = e.Next() { if e.Value == target { l.Remove(e) break } }
L'opération de recherche d'une liste chaînée nécessite souvent de parcourir l'intégralité de la liste chaînée, la complexité temporelle est donc élevée. Cependant, pour les listes chaînées à petite échelle, l’opération de recherche est très rapide.
Trouver un élément dans la liste chaînée// 找到需要查找的元素 target := 2 for e := l.Front(); e != nil; e = e.Next() { if e.Value == target { fmt.Println("Find it!") break } }
Vous pouvez utiliser les méthodes Front() et Next() pour parcourir la liste chaînée de du début à la fin. L'exemple de code est le suivant :# 🎜🎜#
max := 0 for e := l.Front(); e != nil; e = e.Next() { if e.Value.(int) > max { max = e.Value.(int) } } fmt.Println("Max value is:", max)
Parcourez la liste chaînée de bout en bout
for e := l.Front(); e != nil; e = e.Next() { fmt.Println(e.Value) }
Cet article présente brièvement la méthode d'implémentation de linked. lister les opérations en langage Go. En utilisant le package conteneur/list, nous implémentons des opérations de base telles que l'insertion, la suppression, la recherche et le parcours de listes chaînées. Pour les opérations de liste chaînée dans les applications réelles, nous devons les encapsuler et les développer davantage en fonction des besoins spécifiques pour répondre aux besoins de l'entreprise.
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!