Download - Estrutura de Dados - Aula 08
![Page 2: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/2.jpg)
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PILHAS
PILHAS
![Page 3: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/3.jpg)
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
![Page 4: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/4.jpg)
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
![Page 5: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/5.jpg)
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
![Page 6: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/6.jpg)
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
![Page 7: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/7.jpg)
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
![Page 8: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/8.jpg)
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
![Page 9: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/9.jpg)
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();
![Page 10: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/10.jpg)
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Inicializando a lista com elemento vazio.
void iniciar_lista()
{
primeiro = NULL;
}
![Page 11: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/11.jpg)
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;
}
![Page 12: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/12.jpg)
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;
}
}
![Page 13: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/13.jpg)
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();
}
![Page 14: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/14.jpg)
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Retorna o último elemento.
alunos *ultimo_elemento()
{
return ultimo;
}
![Page 15: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/15.jpg)
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.
![Page 16: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/16.jpg)
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: ";
}
![Page 17: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/17.jpg)
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
![Page 18: Estrutura de Dados - Aula 08](https://reader031.vdocuments.com.br/reader031/viewer/2022030318/5a679c167f8b9a8b268b543f/html5/thumbnails/18.jpg)
Obrigado !!!
ANHANGUERA – 2015.2