that_one_nigga_you_k

classe de pilha ainda mais completa

Sep 3rd, 2024 (edited)
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. template <typename T>
  4. class Pilha {
  5. private:
  6.     T* arr;
  7.     int capacidade;
  8.     int topo;
  9.  
  10. public:
  11.     // Construtor padrão
  12.     Pilha(int tamanho = 10) {
  13.         arr = new T[tamanho];
  14.         capacidade = tamanho;
  15.         topo = -1;
  16.     }
  17.  
  18.     // Destrutor
  19.     ~Pilha() {
  20.         delete[] arr;
  21.     }
  22.  
  23.     // Adicionar um elemento à pilha
  24.     void colocar(T dado) {
  25.         if (topo == capacidade - 1) {
  26.             std::cout << "Pilha cheia" << std::endl;
  27.             return;
  28.         }
  29.         arr[++topo] = dado;
  30.     }
  31.  
  32.     // Remover um elemento da pilha
  33.     void remover() {
  34.         if (topo == -1) {
  35.             std::cout << "Pilha vazia" << std::endl;
  36.             return;
  37.         }
  38.         topo--;
  39.     }
  40.  
  41.     // Obter o elemento do topo da pilha
  42.     T obterTopo() const {
  43.         if (topo == -1) {
  44.             throw std::underflow_error("Pilha vazia");
  45.         }
  46.         return arr[topo];
  47.     }
  48.  
  49.     // Obter o elemento do fundo da pilha
  50.     T obterFundo() const {
  51.         if (topo == -1) {
  52.             throw std::underflow_error("Pilha vazia");
  53.         }
  54.         return arr[0];
  55.     }
  56.  
  57.     // Verificar se a pilha está vazia
  58.     bool estaVazia() const {
  59.         return topo == -1;
  60.     }
  61.  
  62.     // Verificar se a pilha está cheia
  63.     bool estaCheia() const {
  64.         return topo == capacidade - 1;
  65.     }
  66.  
  67.     // Imprimir os elementos da pilha
  68.     void imprimir() const {
  69.         if (topo == -1) {
  70.             std::cout << "Pilha vazia" << std::endl;
  71.             return;
  72.         }
  73.         for (int i = 0; i <= topo; i++) {
  74.             std::cout << arr[i] << " ";
  75.         }
  76.         std::cout << std::endl;
  77.     }
  78. };
  79.  
  80. int main() {
  81.     Pilha<int> pilha(5);
  82.  
  83.     pilha.colocar(10);
  84.     pilha.colocar(20);
  85.     pilha.colocar(30);
  86.     pilha.colocar(40);
  87.     pilha.colocar(50);
  88.  
  89.     std::cout << "Elementos da pilha: ";
  90.     pilha.imprimir();
  91.  
  92.     pilha.remover();
  93.     pilha.remover();
  94.  
  95.     std::cout << "Elementos da pilha após remover: ";
  96.     pilha.imprimir();
  97.  
  98.     std::cout << "Elemento no topo da pilha: " << pilha.obterTopo() << std::endl;
  99.     std::cout << "Elemento no fundo da pilha: " << pilha.obterFundo() << std::endl;
  100.  
  101.     return 0;
  102. }
  103.  
Add Comment
Please, Sign In to add comment