Maison > développement back-end > Golang > implémentation de la liste Golang

implémentation de la liste Golang

王林
Libérer: 2023-05-16 10:22:08
original
699 Les gens l'ont consulté

Golang est un langage de programmation efficace et concis qui présente de grands avantages en termes de performances et de concurrence. Dans Golang, il existe de nombreuses implémentations de structures de données de collecte, y compris des listes. La liste est une structure de données très importante qui peut être utilisée pour stocker un ensemble de données et prend en charge l'insertion et la suppression d'éléments à n'importe quel endroit. Cet article explique comment utiliser Golang pour implémenter une liste.

  1. Définition de la liste

List est une structure de données qui est une collection ordonnée d'éléments. Dans une liste, chaque élément a un prédécesseur et un successeur, à l'exception du premier et du dernier élément. Le premier élément n’a aucun élément prédécesseur et le dernier élément n’a aucun élément successeur. List fournit quelques opérations de base, telles que l'ajout d'éléments, la suppression d'éléments, l'accès à des éléments, etc.

  1. Implémentation de List

Dans Golang, pour implémenter List, vous pouvez utiliser une liste doublement chaînée. Une liste doublement chaînée contient une tête de pointeur pointant vers le premier nœud et une queue de pointeur pointant vers le dernier nœud. Chaque nœud contient un pointeur prev qui pointe vers le nœud précédent et un pointeur next qui pointe vers le nœud suivant, ainsi qu'une valeur val pour stocker la valeur du nœud. Comme indiqué ci-dessous :

type ListNode struct {

prev *ListNode // 指向前一个节点
next *ListNode // 指向后一个节点
val  interface{// 当前节点的值
} 
Copier après la connexion

}
type List struct {

head *ListNode // 指向第一个节点
tail *ListNode // 指向最后一个节点
len  int       // List的长度
Copier après la connexion

}

#🎜 🎜#Lors de la mise en œuvre de List, nous devons prêter attention aux points suivants :

(1) Ajouter des éléments

Il existe deux manières principales d'ajouter des éléments à List, à savoir dans le tableau Ajouter des éléments en tête et ajouter des éléments à la fin de la liste. Nous pouvons les implémenter en utilisant les méthodes AddFront et AddBack.

func (liste *Liste) AddFront(val interface{}) {

node := &ListNode{
    prev: nil,
    next: list.head,
    val:  val,
}
if list.head == nil { // 如果链表为空
    list.head = node
    list.tail = node
} else {
    list.head.prev = node
    list.head = node
}
list.len++
Copier après la connexion

}

func (liste *Liste) AddBack(val interface {}) {

node := &ListNode{
    prev: list.tail,
    next: nil,
    val:  val,
}
if list.tail == nil { // 如果链表为空
    list.head = node
    list.tail = node
} else {
    list.tail.next = node
    list.tail = node
}
list.len++
Copier après la connexion

}

(2) Suppression d'éléments

La suppression d'éléments est principalement divisée en deux situations, la suppression d'éléments d'en-tête et la suppression d'éléments de queue élément. Nous pouvons également utiliser les méthodes RemoveFront et RemoveBack pour supprimer des éléments.

func (liste *Liste) RemoveFront() {

if list.head == nil { // 如果链表为空
    return
}
if list.head == list.tail { // 如果链表只有一个元素
    list.head = nil
    list.tail = nil
    list.len = 0
    return
}
list.head = list.head.next
list.head.prev = nil
list.len--
Copier après la connexion

}

func (liste *Liste) RemoveBack() {

if list.tail == nil { // 如果链表为空
    return
}
if list.head == list.tail { // 如果链表只有一个元素
    list.head = nil
    list.tail = nil
    list.len = 0
    return
}
list.tail = list.tail.prev
list.tail.next = nil
list.len--
Copier après la connexion

}

(3) Accéder aux éléments

Pour accéder aux éléments de la liste, il suffit de les parcourir un par un en partant de la tête ou de la queue du tableau jusqu'à ce que vous trouviez l'élément requis. Nous pouvons utiliser les méthodes Front et Back pour accéder au premier et au dernier élément de la liste.

func (liste *Liste) Interface Front(){} {

if list.head == nil {
    return nil
}
return list.head.val
Copier après la connexion

}

func (liste *Liste) Interface Retour(){ } {

if list.tail == nil {
    return nil
}
return list.tail.val
Copier après la connexion
}

Ce qui précède est la méthode de base d'implémentation de List dans Golang, qui peut être ajustée et optimisée en fonction des besoins réels.

    Summary
Il est très simple d'implémenter List dans Golang, il suffit d'utiliser une liste doublement chaînée. List a été implémenté dans la bibliothèque standard de Golang, il est donc recommandé d'utiliser la liste dans la bibliothèque standard en utilisation réelle. Si vous devez personnaliser la liste, vous pouvez ajuster et optimiser le code donné ci-dessus en fonction des besoins réels.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal