SlideShare uma empresa Scribd logo
1 de 18
ANHANGUERA – 2015.2
ESTRUTURA DE DADOS
AULA 08 – PILHAS
Prof. Thomás da Costa
thomascosta@aedu.com
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 de
estrutura bastante utilizado em sistemas computacionais.
PILHAS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Conceitos:
L.I.F.O
LAST 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

Mais conteúdo relacionado

Mais procurados

Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
Matlab – curso básico (1)
Matlab – curso básico (1)Matlab – curso básico (1)
Matlab – curso básico (1)Felipe Meganha
 
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO PERMUTAÇÕES COM PILHAS
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO PERMUTAÇÕES COM PILHASANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO PERMUTAÇÕES COM PILHAS
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO PERMUTAÇÕES COM PILHASAntonio Claudio Lage Buffara
 
Apresentação de Ruby com Watir webdriver
Apresentação de Ruby com Watir webdriverApresentação de Ruby com Watir webdriver
Apresentação de Ruby com Watir webdriverRafael Lima
 
Comparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaComparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaMario Sergio
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialFlávio Schuindt
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework GrailsBruno Catão
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?Denis Costa
 

Mais procurados (20)

Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Introdução à Estrutura de Dados
Introdução à Estrutura de DadosIntrodução à Estrutura de Dados
Introdução à Estrutura de Dados
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
Matlab – curso básico (1)
Matlab – curso básico (1)Matlab – curso básico (1)
Matlab – curso básico (1)
 
String
StringString
String
 
Tdc2010 web
Tdc2010 webTdc2010 web
Tdc2010 web
 
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO PERMUTAÇÕES COM PILHAS
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO PERMUTAÇÕES COM PILHASANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO PERMUTAÇÕES COM PILHAS
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO PERMUTAÇÕES COM PILHAS
 
Estruturas
EstruturasEstruturas
Estruturas
 
Apresentação de Ruby com Watir webdriver
Apresentação de Ruby com Watir webdriverApresentação de Ruby com Watir webdriver
Apresentação de Ruby com Watir webdriver
 
programação c 10 aula
programação c 10 aulaprogramação c 10 aula
programação c 10 aula
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
programação c 3 aula
programação c 3 aulaprogramação c 3 aula
programação c 3 aula
 
Comparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaComparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs Java
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicial
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework Grails
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?
 
programação c 5 aula
programação c 5 aulaprogramação c 5 aula
programação c 5 aula
 
Apresentação Lua
Apresentação LuaApresentação Lua
Apresentação Lua
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
 

Destaque

Programação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código FonteProgramação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código Fontethomasdacosta
 
Aula 02 Primeiro Cod Java
Aula 02   Primeiro Cod JavaAula 02   Primeiro Cod Java
Aula 02 Primeiro Cod JavaSergio Silva
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02thomasdacosta
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeRegis Magalhães
 

Destaque (8)

Programação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código FonteProgramação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código Fonte
 
Aula 02 Primeiro Cod Java
Aula 02   Primeiro Cod JavaAula 02   Primeiro Cod Java
Aula 02 Primeiro Cod Java
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 Recursividade
 

Semelhante a Estrutura de Dados - Aula 08

Semelhante a Estrutura de Dados - Aula 08 (7)

Slides pilhas e_filas
Slides  pilhas e_filasSlides  pilhas e_filas
Slides pilhas e_filas
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Aula02 Pilhas
Aula02   PilhasAula02   Pilhas
Aula02 Pilhas
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Filas encadeadas
Filas encadeadasFilas encadeadas
Filas encadeadas
 

Mais de thomasdacosta

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01thomasdacosta
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02thomasdacosta
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03thomasdacosta
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06thomasdacosta
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05thomasdacosta
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07thomasdacosta
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06thomasdacosta
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04thomasdacosta
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05thomasdacosta
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03thomasdacosta
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04thomasdacosta
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03thomasdacosta
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03thomasdacosta
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02thomasdacosta
 
Programação Concorrente - LAB 01
Programação Concorrente - LAB 01Programação Concorrente - LAB 01
Programação Concorrente - LAB 01thomasdacosta
 
Programação Concorrente - Aula 02
Programação Concorrente - Aula 02Programação Concorrente - Aula 02
Programação Concorrente - Aula 02thomasdacosta
 

Mais de thomasdacosta (20)

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 
Programação Concorrente - LAB 01
Programação Concorrente - LAB 01Programação Concorrente - LAB 01
Programação Concorrente - LAB 01
 
Programação Concorrente - Aula 02
Programação Concorrente - Aula 02Programação Concorrente - Aula 02
Programação Concorrente - Aula 02
 

Estrutura de Dados - Aula 08

  • 1. ANHANGUERA – 2015.2 ESTRUTURA DE DADOS AULA 08 – PILHAS Prof. Thomás da Costa thomascosta@aedu.com
  • 2. ESTRUTURA DE DADOS – Prof. Thomás da Costa PILHAS PILHAS
  • 3. 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 de estrutura bastante utilizado em sistemas computacionais. PILHAS
  • 4. ESTRUTURA DE DADOS – Prof. Thomás da Costa Conceitos: L.I.F.O LAST IN, FIRST OUT. Último a entrar, primeiro a sair. Conhecido também como Stack. Pilhas PILHAS
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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();
  • 10. ESTRUTURA DE DADOS – Prof. Thomás da Costa Inicializando a lista com elemento vazio. void iniciar_lista() { primeiro = NULL; }
  • 11. 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; }
  • 12. 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; } }
  • 13. 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(); }
  • 14. ESTRUTURA DE DADOS – Prof. Thomás da Costa Retorna o último elemento. alunos *ultimo_elemento() { return ultimo; }
  • 15. 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.
  • 16. 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: "; }
  • 17. 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