Maison  >  Article  >  développement back-end  >  tableau golang vers liste chaînée

tableau golang vers liste chaînée

PHPz
PHPzoriginal
2023-05-14 16:18:37584parcourir

Golang est un langage de programmation efficace avec des structures de données flexibles et diversifiées et faciles à utiliser. Dans Golang, les tableaux et les listes chaînées sont des structures de données couramment utilisées. Le tableau est une structure linéaire, tandis que la liste chaînée est une structure non linéaire. Dans certains cas, il est nécessaire de convertir un tableau en liste chaînée pour faciliter le traitement des données. Cet article explique comment convertir un tableau en liste chaînée dans Golang.

1. La différence entre les tableaux et les listes chaînées

Les tableaux et les listes chaînées sont deux façons de stocker un ensemble de données, mais il existe une grande différence entre eux. Voici une brève introduction à leurs différences :

  1. Un tableau est une structure de données continue de taille fixe qui peut accéder de manière aléatoire à des éléments via des indices. Une liste chaînée est une structure de données discontinue et de taille dynamique dans laquelle les éléments sont liés entre eux via des pointeurs.
  2. Les tableaux occupent un espace mémoire continu et l'accès aux éléments via des indices est très rapide ; tandis que les listes chaînées relient les éléments via des pointeurs, et les éléments ne sont pas accessibles de manière aléatoire, à l'exception du premier élément, la vitesse d'accès est donc lente.
  3. Les opérations d'insertion et de suppression du tableau sont plus difficiles, et d'autres éléments doivent être déplacés, et la complexité temporelle est O(n) ; les opérations de suppression sont plus pratiques et la complexité temporelle est O(n).

2. Convertir le tableau en liste chaînée

Les étapes suivantes peuvent être utilisées pour convertir un tableau en liste chaînée dans Golang :

    #🎜 🎜#Définissez le type de nœud de liste chaînée.
// Définir le type de nœud de liste chaînée

type ListNode struct {

Val int
Next *ListNode

}

Ici, nous définissons Type de nœud de liste chaînée qui contient la valeur du nœud et un pointeur vers le nœud suivant.

    Créez une liste chaînée.
// Convertir un tableau en liste chaînée

func arrayToList(nums []int) *ListNode {

var head *ListNode
// 遍历数组
for i := len(nums) - 1; i >= 0; i-- {
    // 创建链表节点
    node := &ListNode{nums[i], nil}
    node.Next = head // 将新节点链接到链表头
    head = node      // 将新节点设置为链表头
}
return head

}

#🎜 🎜#Ce code convertit un tableau en liste chaînée. Nous définissons d’abord une tête de nœud de tête de liste chaînée et l’initialisons à zéro. Ensuite, parcourez le tableau, en créant chaque nœud tour à tour et en le liant à l'en-tête de la liste chaînée. Enfin, renvoyez le nœud principal de la liste chaînée.

Testez le code.
  1. func main() {
nums := []int{1, 2, 3, 4, 5}
head := arrayToList(nums)

for head != nil {
    fmt.Print(head.Val, " ")
    head = head.Next
}

}

Nous pouvons utiliser le code ci-dessus pour tester le résultat de la conversion du tableau en une liste chaînée. Ici, nous définissons un tableau [1,2,3,4,5] et le convertissons en liste chaînée. Ensuite, en parcourant la liste chaînée, affichez la valeur de chaque nœud.

3. Résumé

Dans Golang, la conversion de tableaux en listes chaînées peut nous aider à traiter les données plus facilement. Dans la méthode ci-dessus, nous convertissons le tableau en liste chaînée en définissant le type de nœud de liste chaînée, en parcourant le tableau et en liant chaque nœud à la tête de la liste chaînée. Grâce aux étapes ci-dessus, nous pouvons facilement convertir le tableau en une liste chaînée et profiter de la commodité apportée par la liste chaînée, telle que des opérations d'insertion et de suppression pratiques.

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!

Déclaration:
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