Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- template <typename T>
- class Pilha {
- private:
- T* arr;
- int capacidade;
- int topo;
- public:
- // Construtor padrão
- Pilha(int tamanho = 10) {
- arr = new T[tamanho];
- capacidade = tamanho;
- topo = -1;
- }
- // Destrutor
- ~Pilha() {
- delete[] arr;
- }
- // Adicionar um elemento à pilha
- void colocar(T dado) {
- if (topo == capacidade - 1) {
- std::cout << "Pilha cheia" << std::endl;
- return;
- }
- arr[++topo] = dado;
- }
- // Remover um elemento da pilha
- void remover() {
- if (topo == -1) {
- std::cout << "Pilha vazia" << std::endl;
- return;
- }
- topo--;
- }
- // Obter o elemento do topo da pilha
- T obterTopo() const {
- if (topo == -1) {
- throw std::underflow_error("Pilha vazia");
- }
- return arr[topo];
- }
- // Obter o elemento do fundo da pilha
- T obterFundo() const {
- if (topo == -1) {
- throw std::underflow_error("Pilha vazia");
- }
- return arr[0];
- }
- // Verificar se a pilha está vazia
- bool estaVazia() const {
- return topo == -1;
- }
- // Verificar se a pilha está cheia
- bool estaCheia() const {
- return topo == capacidade - 1;
- }
- // Imprimir os elementos da pilha
- void imprimir() const {
- if (topo == -1) {
- std::cout << "Pilha vazia" << std::endl;
- return;
- }
- for (int i = 0; i <= topo; i++) {
- std::cout << arr[i] << " ";
- }
- std::cout << std::endl;
- }
- };
- int main() {
- Pilha<int> pilha(5);
- pilha.colocar(10);
- pilha.colocar(20);
- pilha.colocar(30);
- pilha.colocar(40);
- pilha.colocar(50);
- std::cout << "Elementos da pilha: ";
- pilha.imprimir();
- pilha.remover();
- pilha.remover();
- std::cout << "Elementos da pilha após remover: ";
- pilha.imprimir();
- std::cout << "Elemento no topo da pilha: " << pilha.obterTopo() << std::endl;
- std::cout << "Elemento no fundo da pilha: " << pilha.obterFundo() << std::endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment