Maison  >  Article  >  développement back-end  >  Réapprendre les bases de CS - Implémentation de la pile

Réapprendre les bases de CS - Implémentation de la pile

Susan Sarandon
Susan Sarandonoriginal
2024-10-14 06:17:02448parcourir

Relearning Basics of CS - Implementing Stack

J'ai essayé d'apprendre un nouveau langage de programmation et quelle meilleure façon de le faire que de partir des bases. Dans cette série d'articles à venir, je tenterai d'implémenter une structure de données et des algorithmes simples à l'aide de Go. 

Dans le livre An Introduction to algorithms By CLRS dans le chapitre Structure de données élémentaire, la première structure de données dont on parle est la pile.

Qu'est-ce qu'une pile

La pile est une structure de données simple utilisée pour stocker un ensemble d'éléments. Les propriétés d'une pile sont qu'elle nous permet d'ajouter un élément en haut de la pile et de le supprimer de la pile afin qu'il suive le principe Last In First Out ou LIFO.

L'opération d'insertion s'appelle un Push et l'opération de suppression s'appelle un Pop. Puisque nous ne voulons pas qu'une pile vide apparaisse et que nous traitions les erreurs de mémoire, nous implémentons également une vérification pour savoir si une pile est vide ou non. Structure de données assez simple.

Vous trouverez ci-dessous l'implémentation de la stack dans Golang. La complexité temporelle est O(N) et la complexité spatiale de l'utilisation d'une pile est O(1)

package main

import "fmt"

type Stack []int

func (stack *Stack) Push (value int){
    *stack = append(*stack, value)
}

func (stack *Stack) Pop () int{
    if stack.IsEmpty() {
        return 0
    }
    top := (*stack)[len(*stack)-1]
    *stack = (*stack)[:len(*stack)-1]
    return top
}

func (stack *Stack) IsEmpty() bool{
    return len(*stack) == 0
}


func main(){
    st := Stack{}
    st.Push(1)
    st.Push(2)
    fmt.Println(st.Pop())
}

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