estrutura de dados - aula 08
TRANSCRIPT
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PILHAS
PILHAS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Pilhas
O que é?:
É um TAD, onde o último a entrar é o primeiro a sair. A pilha é um tipo deestrutura bastante utilizado em sistemas computacionais.
PILHAS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Conceitos:
L.I.F.OLAST IN, FIRST OUT.
Último a entrar, primeiro a sair.Conhecido também como Stack.
Pilhas
PILHAS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Como funciona:
• Iniciar a pilha.• Verifica se a pilha está vazia.• Inserir um elemento no final da pilha.• Retirar um elemento no final da pilha.
Pilhas
PILHAS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
struct alunos
{
char nome[100];
int idade;
alunos *proximo;
} *primeiro;
char nome[100];
int idade;
"Aluno 1"
20
alunos *proximo;
char nome[100];
int idade;
"Aluno 2"
21
alunos *proximo;
char nome[100];
int idade;
"Aluno 3"
23
alunos *proximo;
NULL
Estrutura “alunos”.
Próximo elemento da pilha.
Primeiro elemento da pilha.
Primeiro elemento a sair da pilha.
Elemento 1 Elemento 2 Elemento 3
Pilhas
PILHAS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Onde utilizamos:
• Funções recursivas.• Navegação entre páginas dentro de um navegador web.• Mecanismo de desfazer uma ação e refazê-la em um editor de texto.
Pilhas
PILHAS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Observações:
• Utilizamos o algoritmo de lista.• Podemos utilizar o algoritmo de lista encadeada, lista duplamente
encadeada e lista circular.• Nos algoritmos, sempre inserimos um elemento no final.• No algoritmo de pilha, a remoção acontece no último elemento.• Nos nossos exemplos conseguirmos percorrer a pilha do começo mas
podemos retirar somente do final.
Pilhas
PILHAS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Operações:
Vamos analisar as funções !!!
Pilhas
PILHAS
• void iniciar_lista();
• int esta_vazio();
• void inserir_aluno();
• void listar_alunos();
• alunos *ultimo_elemento();
• void remover_aluno();
• void menu();
• void limpar_teclado();
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Inicializando a lista com elemento vazio.
void iniciar_lista()
{
primeiro = NULL;
}
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Retorna o total de elementos de uma lista.
Lista vazia.
int esta_vazio()
{
system("cls");
int total;
if (primeiro == NULL)
total = 0;
else
{
alunos *p;
p = primeiro;
total = 1;
while (p->proximo != NULL)
{
p = p->proximo;
total++;
}
}
return total;
}
ESTRUTURA DE DADOS – Prof. Thomás da Costa
void inserir_aluno()
{
system("cls");
limpar_teclado();
alunos *novo_aluno = new alunos;
cout << "Digite o nome do aluno:" << endl;
fgets(novo_aluno->nome, sizeof(novo_aluno->nome), stdin);
cout << "Digite a idade do aluno:" << endl;
cin >> novo_aluno->idade;
novo_aluno->proximo = NULL;
if (primeiro == NULL)
{
primeiro = novo_aluno;
ultimo = novo_aluno;
}
else
{
alunos *p;
p = primeiro;
while (p->proximo != NULL)
p = p->proximo;
p->proximo = novo_aluno;
ultimo = novo_aluno;
}
}
ESTRUTURA DE DADOS – Prof. Thomás da Costa
void listar_alunos(){
system("cls");if (primeiro == NULL){
cout << "Nenhum aluno cadastrado." << endl;cout << "Pressione uma tecla para continuar..." << endl;getch();return;
}
alunos *p;p = primeiro;
if (p->proximo == NULL) {
cout << "------------------------------------" << endl;cout << "Nome do Aluno:" << p->nome << endl;cout << "Idade do Aluno:" << p->idade << endl;cout << "------------------------------------" << endl;
}else{
while (p != NULL){
cout << "------------------------------------" << endl;cout << "Nome do Aluno:" << p->nome << endl;cout << "Idade do Aluno:" << p->idade << endl;cout << "------------------------------------" << endl;p = p->proximo;
}}getch();
}
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Retorna o último elemento.
alunos *ultimo_elemento()
{
return ultimo;
}
ESTRUTURA DE DADOS – Prof. Thomás da Costa
void remover_aluno()
{
alunos *p = primeiro;
while (p->proximo != ultimo)
p = p->proximo;
delete p->proximo;
ultimo = p;
p->proximo = NULL;
cout << "Aluno excluído com sucesso !!!" << endl;
getch();
}
Excluindo elemento da memória.
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Novas opções de menu !!!
void menu()
{
system("cls");
cout << "1 - INSERIR ALUNOS" << endl;
cout << "2 - LISTAR ALUNOS" << endl;
cout << "3 - EXCLUIR ALUNOS" << endl;
cout << "4 - TAMANHO DA LISTA" << endl;
cout << "5 - ULTIMO ELEMENTO" << endl;
cout << "0 - SAIR" << endl;
cout << "Digite uma opção: ";
}
ESTRUTURA DE DADOS – Prof. Thomás da Costa
• LIFO – Last in, First Out.• Primeiro elemento entra no final da fila.• Aprimoramos o programa utilizado em lista para remover sempre o último
elemento.• A estrutura aponta para o primeiro elemento da lista. Com isso mantemos a
referência para o início da lista.• Possuímos uma referência para o último elemento da lista.
Resumo
PILHAS
Obrigado !!!
ANHANGUERA – 2015.2