Curso completo de linguagem C++
Gameprog - Escola de programação de jogos digitais
Contato: gameprog.br@gmail.com
track24.html

index << >>

24. Pilha simples - stack

24.1 Visão geral A pilha simples, implementada pela classe genérica stack, é uma estrutura de dados com semelhança a uma pilha de pratos de um restaurante do mundo real. O último prato que entra na pilha é o primeiro a ser lavado porque é o mais fácil de ser retirado. O último dado da pilha é o primeiro a ser processado. É comum o uso da pilha para implementar o recurso de desfazer (undo) dos programas. O último ato executado é o primeiro a ser desfeito, vindo o penúltimo na sequência e assim sucessivamente ao reverso. Outro uso para a pilha, em um videogame, consiste em mapear na pilha um caminho que está sendo verificado, na ocorrência de um caminho desfavorável, o processo retorna para o último ponto verificado, podendo a partir desse último ponto verificar outras alternativas do caminho sendo mapeado. Veja nosso programa exemplo que simula um trajeto São Paulo - Mauá:
// stack_tst.cpp // Este programa ilustra o uso da pilha #include <iostream> #include <string> #include <stack> using namespace std; int main() { system("color f0"); system("title stack_tst.cpp"); cout << endl; // Declarando a pilha stack<string> pilha; // Nossso caminho SP - Maua e vice-versa string caminho[6]; caminho[0] = "[1]SP "; caminho[1] = "[2]Diadema"; caminho[2] = "[3]SBC "; caminho[3] = "[4]SA "; caminho[4] = "[5]SC "; caminho[5] = "[6]Maua"; // Colocando dados na pilha... cout << "\tEstou indo para Maua..." << endl; for (int ncx=0; ncx < 6; ncx++) { cout << "\n\t"; cout << caminho[ncx]; pilha.push ( caminho[ncx] ); } // end for cout << "\n -------------------------------------------------"; cout << endl << endl; // Mostrando e retirando dados da pilha... cout << "\tEstou voltando para SP..." << endl; for (int ncx=0; ncx < 6; ncx++) { cout << "\n\t"; cout << pilha.top(); pilha.pop(); } // endfor cout << endl; cout << endl; system("pause"); } // endfunction: main()
Declarando a pilha #include <stack> // Declarando a pilha stack<string> pilha; O fragmento de código acima ilustra como você deve declarar a pilha depois que você incluiu o arquivo <stack> no seu programa. Colocando dados na pilha Os dados são adicionados na pilha através do método .push ( elemento ): pilha.push ( caminho[ncx] ); Mostrando os dados da pilha O método .top() retorna uma referência do elemento do topo da pilha: cout << pilha.top(); Deletando dados da pilha pilha.pop(); O método .pop() exclui o dado do topo da pilha, promovendo o elemento anterior ao topo.
index << >>


Produzido por Gameprog: Jair Pereira - Fev/2006 - Junho/2013 © gameprog.br@gmail.com http://www.gameprog.com.br