18
ANHANGUERA – 2015.2 ESTRUTURA DE DADOS AULA 08 – PILHAS Prof. Thomás da Costa [email protected]

Estrutura de Dados - Aula 08

Embed Size (px)

Citation preview

Page 1: Estrutura de Dados - Aula 08

ANHANGUERA – 2015.2

ESTRUTURA DE DADOSAULA 08 – PILHAS

Prof. Thomás da [email protected]

Page 2: Estrutura de Dados - Aula 08

ESTRUTURA DE DADOS – Prof. Thomás da Costa

PILHAS

PILHAS

Page 3: Estrutura de Dados - Aula 08

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

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

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

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

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

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

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

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

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

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

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

ESTRUTURA DE DADOS – Prof. Thomás da Costa

Retorna o último elemento.

alunos *ultimo_elemento()

{

return ultimo;

}

Page 15: Estrutura de Dados - Aula 08

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

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

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

Obrigado !!!

ANHANGUERA – 2015.2