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

implémentation de la pile Golang

王林
Libérer: 2023-05-16 09:24:07
original
629 Les gens l'ont consulté

Golang est un langage de programmation efficace, concis et puissant qui a de nombreuses applications dans l'écriture de divers types d'applications. Ses structures de données et algorithmes intégrés permettent aux programmeurs de créer facilement du code efficace, parmi lequel la pile est l'une des structures de données les plus utilisées. Dans cet article, nous verrons comment implémenter une pile à l'aide de Golang.

Qu'est-ce qu'une pile ?

Une pile est une structure de données dans laquelle les données ne peuvent être ajoutées ou supprimées que dans l'ordre du dernier entré, premier sorti (LIFO). Cela signifie que vous ne pouvez ajouter qu'en haut de la pile et supprimer l'élément le plus récemment ajouté. Lors de l'utilisation d'une pile, le premier élément ajouté est le dernier élément supprimé.

Lors de la création d'une pile, elle comporte deux opérations principales : push et pop. L'opération push ajoute un élément en haut de la pile, tandis que l'opération pop supprime un élément du haut de la pile. Lorsque la pile est vide, l'opération pop renvoie une erreur car les éléments ne peuvent pas en être supprimés.

Comment implémenter la stack avec Golang ?

Dans Golang, les piles peuvent être implémentées à l'aide de tableaux ou de tranches. Les tableaux sont des séquences de longueur fixe qui nécessitent une taille spécifiée lors de leur création, tandis que les tranches sont des séquences de taille dynamique. Étant donné que la taille de la pile n'est pas fixe et doit être redimensionnée dynamiquement au moment de l'exécution, il est préférable de l'implémenter à l'aide de tranches.

Ce qui suit est un exemple de code pour implémenter une pile à l'aide de tranches :

package main

import (
   "fmt"
)

type stack []int

func (s *stack) push(v int) {
   *s = append(*s, v)
}

func (s *stack) pop() (int, error) {
   if s.isEmpty() {
      return -1, fmt.Errorf("stack is empty")
   }
   l := len(*s) - 1
   value := (*s)[l]
   *s = (*s)[:l]
   return value, nil
}

func (s *stack) isEmpty() bool {
   return len(*s) == 0
}

func main() {
   s := stack{}
   s.push(1)
   s.push(2)
   s.push(3)
   
   for !s.isEmpty() {
      value, err := s.pop()
      if err != nil {
         fmt.Println(err)
      } else {
         fmt.Printf("%d ", value)
      }
   }
}
Copier après la connexion

Dans cet exemple, nous définissons un type appelé pile, qui est une tranche de type entier. Nous définissons également trois méthodes : push, pop et isEmpty. La méthode push ajoute une valeur en haut de la pile, et la méthode pop extrait une valeur du haut de la pile et renvoie cette valeur. Si la pile est vide, une erreur est renvoyée. La méthode isEmpty vérifie si la pile est vide.

Dans la fonction principale, nous créons une pile nommée s et ajoutons trois valeurs à l'aide de la méthode push. Nous utilisons ensuite la méthode pop pour lire les valeurs dans l'ordre LIFO. À chaque itération, nous appelons la méthode pop et imprimons chaque valeur. Si la pile est vide, un message d'erreur est imprimé.

Cet exemple montre comment utiliser des tranches dans Golang pour implémenter une pile. Cependant, vous pouvez également implémenter une pile à l'aide de tableaux. Si vous envisagez d'utiliser un tableau, vous devrez utiliser un tampon de taille fixe pour stocker les éléments et essayer d'éviter de modifier la taille lors de l'ajout à une pile complète.

Résumé

Stack est une structure de données simple mais puissante qui peut être facilement implémentée dans Golang. Créez une pile à l'aide d'un tableau ou d'une tranche, redimensionnez-la dynamiquement au moment de l'exécution, puis ajoutez et supprimez des éléments à l'aide des méthodes push et pop. Il est important de faire attention à la taille de la pile et, si possible, d’éviter de modifier la taille lorsque la pile est pleine. Lors de l'apprentissage de la programmation Golang, l'utilisation de la pile en fonction des besoins réels peut améliorer l'efficacité de la programmation et rendre le code plus propre et plus facile à maintenir.

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