Sobes.tech
Junior — Middle

Quais são as principais vantagens e desvantagens da estrutura de dados Stack?

sobes.tech IA

Resposta da IA

A pilha (Stack) é uma estrutura de dados com o princípio de funcionamento LIFO (Last In, First Out), onde o último elemento adicionado é o primeiro a ser removido.

Vantagens:

  • Facilidade de implementação e uso.
  • Acesso rápido ao elemento superior (as operações push, pop, peek são realizadas em O(1)).
  • Muito adequada para tarefas relacionadas com o processamento em ordem inversa, por exemplo, percurso de árvores, desfazer ações, análise sintática.

Desvantagens:

  • Acesso limitado: só se pode trabalhar com o elemento superior, sem acesso arbitrário.
  • O tamanho da pilha pode estar limitado (por exemplo, a pilha de chamadas num programa), o que pode levar a estouros.

Exemplo em Go:

package main
import "fmt"

type Stack []int

func (s *Stack) Push(v int) {
    *s = append(*s, v)
}

func (s *Stack) Pop() (int, bool) {
    if len(*s) == 0 {
        return 0, false
    }
    index := len(*s) - 1
    elem := (*s)[index]
    *s = (*s)[:index]
    return elem, true
}

func main() {
    var s Stack
    s.Push(10)
    s.Push(20)
    fmt.Println(s.Pop()) // 20, true
    fmt.Println(s.Pop()) // 10, true
}