Você está aqui: C# ::: Estruturas de Dados ::: Pilhas

Como criar uma pilha em C# usando um vetor de ints - Estruturas de Dados em C#

Quantidade de visualizações: 1637 vezes
A Pilha é uma estrutura de dados do tipo LIFO - Last-In, First-Out (Último a entrar, primeiro a sair). Neste tipo de estrutura, o último elemento a ser inserido é o primeiro a ser removido. Veja a imagem a seguir:



Embora seja mais comum a criação de uma estrutura de dados do tipo Pilha de forma dinâmica (usando ponteiros e referências), nesta dica eu mostrarei como podemos criá-la em C# usando um array, ou seja, um vetor. No exemplo eu usei inteiros, mas você pode modificar para o tipo de dados que você achar mais adequado.

Veja o código completo para uma classe Pilha usando um vetor de ints. Veja que o tamanho do vetor é informado no construtor da classe. Note também a lógica empregada na construção dos métodos empilhar(), desempilhar() e imprimirPilha():

Código para Pilha.cs:

using System;

namespace Estudos {
  // Esta classe representa uma pilha usando array (vetor)
  class Pilha {
    private int[] elementos; // elementos na pilha
    private int topo; // o elemento no topo da pilha
    private int maximo; // a quantidade máxima de elementos na pilha

    // construtor da classe Pilha
    public Pilha(int tamanho) {
      // constrói o vetor
      elementos = new int[tamanho];
      // define o topo como -1
      topo = -1;
      // ajusta o tamanho da pilha para o valor recebido
      maximo = tamanho;
    }

    // método usado para empilhar um novo elemento na pilha
    public void empilhar(int item) {
      // a pilha já está cheia?
      if (topo == (maximo - 1)) {
        Console.WriteLine("\nA pilha está cheia\n");
        return;
      }
      else {
        // vamos inserir este elemento no topo da pilha
        elementos[++topo] = item;
      }
    }

    // méodo usado para desempilhar um elemento da pilha
    public int desempilhar() {
      // a pilha está vazia
      if (topo == -1) {
        Console.WriteLine("\nA pilha está vazia\n");
        return -1;
      }
      else {
        Console.WriteLine("Elemento desempilhado: " + elementos[topo]);
        return elementos[topo--];
      }
    }

    // método que permite imprimir o conteúdo da pilha
    public void imprimirPilha() {
      // pilha vazia
      if (topo == -1) {
        Console.WriteLine("\nA pilha está vazia\n");
        return;
      }
      else {
        // vamos percorrer todos os elementos da pilha
        for (int i = 0; i <= topo; i++) {
          Console.WriteLine("Item[" + (i + 1) + "]: " + elementos[i]);
        }
      }
    }
  }
}

Veja agora o código para a classe principal, ou seja, a classe Main usada para testar a funcionalidade da nossa pilha:

Código para Principal.cs:

using System;

namespace Estudos {
  class Principal {
    static void Main(string[] args) {
      // vamos criar uma nova pilha com capacidade para 5 elementos
      Pilha p = new Pilha(5);

      // vamos empilhar 3 elementos
      p.empilhar(34);
      p.empilhar(52);
      p.empilhar(18);

      // vamos mostrar os elementos na pilha
      Console.WriteLine("Itens presentes na Pilha\n");
      p.imprimirPilha();

      // agora vamos remover e retornar dois elementos da pilha
      Console.WriteLine();
      p.desempilhar();
      p.desempilhar();

      // vamos mostrar os elementos na pilha novamente
      Console.WriteLine("\nItens presentes na Pilha\n");
      p.imprimirPilha();

      Console.WriteLine("Pressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

Ao executar este código C# nós teremos o seguinte resultado:

Itens presentes na Pilha

Item[1]: 34
Item[2]: 52
Item[3]: 18

Elemento desempilhado: 18
Elemento desempilhado: 52

Itens presentes na Pilha

Item[1]: 34

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de C#

Veja mais Dicas e truques de C#

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 23 usuários muito felizes estudando em nosso site.