Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouCamila Pinho Gameiro Alterado mais de 8 anos atrás
1
ESTRUTURA DE DADOS Aula 6 – Pilha
2
ESTRUTURA DE DADOS PILHA – Aula6 Atenção aos Temas Principais dessa Aula
3
ESTRUTURA DE DADOS PILHA – Aula6 Conteúdo Programático desta aula Apresentar o conceito de Pilha; Apresentar aplicações da Pilha; Apresentar o critério LIFO e suas limitações Implementar as funções empilhar, desempilhar, exibir topo e outras;
4
ESTRUTURA DE DADOS PILHA – Aula6 Direto ao Assunto
5
ESTRUTURA DE DADOS PILHA – Aula6
6
ESTRUTURA DE DADOS PILHA – Aula6 VOCÊ ERROU! NÃO ERA PILHA?
7
ESTRUTURA DE DADOS PILHA – Aula6 ERA! E AGORA?
8
ESTRUTURA DE DADOS PILHA – Aula6 USA AQUELAS TECLAS.
9
ESTRUTURA DE DADOS PILHA – Aula6
10
ESTRUTURA DE DADOS PILHA – Aula6
11
ESTRUTURA DE DADOS PILHA – Aula6 “A pilha é uma das estruturas de dados mais úteis em computação. … Uma pilha é um tipo especial de lista linear em que todas as operações de inserção e remoção são realizadas numa mesma extremidade, denominada topo”(PEREIRA, S.L. 2004, p 17). Conceito de Pilha
12
ESTRUTURA DE DADOS PILHA – Aula6
13
ESTRUTURA DE DADOS PILHA – Aula6
14
ESTRUTURA DE DADOS PILHA – Aula6 Considerações sobre a PILHA
15
ESTRUTURA DE DADOS PILHA – Aula6 Inserção ou Remoção de um elemento sempre acontece na mesma extremidade. Considerações sobre a PILHA
16
ESTRUTURA DE DADOS PILHA – Aula6 Inserção na Pilha
17
ESTRUTURA DE DADOS PILHA – Aula6 Inserção na Pilha Remoção da Pilha
18
ESTRUTURA DE DADOS PILHA – Aula6 Inserção ou Remoção de um elemento sempre acontece na mesma extremidade. Não existe movimentação na pilha quando inserimos, ou removemos um elemento dela. Considerações sobre a PILHA
19
ESTRUTURA DE DADOS PILHA – Aula6 Inserção ou Remoção de um elemento sempre acontece na mesma extremidade. Podemos usar matrizes homogêneas ou heterogêneas, alocação sequencial, e uma variável para controlar o topo. Não existe movimentação na pilha quando inserimos, ou removemos um elemento dela. Considerações sobre a PILHA
20
ESTRUTURA DE DADOS PILHA – Aula6 Um dos fatores que limita o crescimento da pilha é a quantidade de memória alocada quando usamos matrizes. Considerações sobre a PILHA
21
ESTRUTURA DE DADOS PILHA – Aula6 Um dos fatores que limita o crescimento da pilha é a quantidade de memória alocada quando usamos matrizes. Quando formos empilhar um elemento, é preciso verificar se a pilha não está cheia. Isso evita overflow. Considerações sobre a PILHA
22
ESTRUTURA DE DADOS PILHA – Aula6 Um dos fatores que limita o crescimento da pilha é a quantidade de memória alocada quando usamos matrizes. Quando formos empilhar um elemento, é preciso verificar se a pilha não está cheia. Isso evita overflow. Quando formos desempilhar um elemento, é preciso verificar se a pilha não está vazia. Isso evita underflow. Considerações sobre a PILHA
23
ESTRUTURA DE DADOS PILHA – Aula6
24
ESTRUTURA DE DADOS PILHA – Aula6 1 Histórico de páginas visitadas num navegador. 2 Sequencia de desfazer em vários softwares, o famoso atalho Ctrl Z. 3 Implementação de recursividade (a torre de Hanói que vimos na disciplina de Algoritmos). 4 A cadeia de chamadas de funções num programa. 5 Avaliação de expressões aritméticas. 6 Conversão de Decimal para Binário, etc.
25
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra?
26
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra? 1 a vez
27
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra? 2 a vez
28
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra? 3 a vez
29
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra? 4 a vez
30
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra?
31
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra? 1 a vez
32
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra? 2 a vez
33
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra? 3 a vez
34
ESTRUTURA DE DADOS PILHA – Aula6 Quem não se lembra? 4 a vez
35
ESTRUTURA DE DADOS PILHA – Aula6 Avaliação de parênteses – um clássico
36
ESTRUTURA DE DADOS PILHA – Aula6 #include using namespace std; int expressaoCorreta( char s[]); int main() { char p1[]={"((()))"}; char p2[]={"(()))"}; if(expressaoCorreta(p1)==1) cout<<"\n"<<p1<<" Esta Correta\n"; else cout<<"\n"<<p1<<" Nao esta Correta\n"; if(expressaoCorreta(p2)==1) cout<<"\n"<<p2<<" Esta Correta\n"; else cout<<"\n"<<p2<<" Nao esta Correta\n"; system("pause"); } Código
37
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( ) \0 Função 01234560123456
38
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( 0 0 ( ( ) \0 Função 01234560123456
39
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( 0 0 ( ( ) \0 s[0]== ‘)’? Função 01234560123456
40
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( 0 0 ( ( ) \0 s[0]== ‘)’?N Função 01234560123456
41
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( 1 ( ) \0 Função 01234560123456
42
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( 1 1 ( ) \0 Função 01234560123456
43
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( 1 1 ( ) \0 s[1]== ‘)’? Função 01234560123456
44
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( 1 1 ( ) \0 s[1]== ‘)’?N Função 01234560123456
45
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( 2 ) ) \0 Função 01234560123456
46
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( 2 2 ) ) \0 Função 01234560123456
47
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( 2 2 ) ) \0 s[2]== ‘)’? Função 01234560123456
48
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( 2 2 ) ) \0 s[2]== ‘)’?N Função 01234560123456
49
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 ) ) \0 Função 01234560123456
50
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) ) \0 Função 01234560123456
51
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) ) \0 s[3]== ‘)’? Função 01234560123456
52
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) ) \0 s[3]== ‘)’?S Função 01234560123456
53
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) ) \0 t!=0 && pilha[t-1]==‘(‘? Função 01234560123456
54
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) ) \0 t!=0 && pilha[t-1]==‘(‘?S Função 01234560123456
55
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 2 ) \0 Função 01234560123456
56
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) \0 Função 01234560123456
57
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) \0 s[4]== ‘)’? Função 01234560123456
58
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) \0 s[4]== ‘)’?S Função 01234560123456
59
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) \0 t!=0 && pilha[t-1]==‘(‘? Função 01234560123456
60
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) \0 t!=0 && pilha[t-1]==‘(‘?S Função 01234560123456
61
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) 1 \0 Função 01234560123456
62
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) 5 1 \0 Função 01234560123456
63
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) 5 1 \0 s[5]== ‘)’? Função 01234560123456
64
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) 5 1 \0 s[5]== ‘)’?S Função 01234560123456
65
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) 5 1 \0 t!=0 && pilha[t-1]==‘(‘? Função 01234560123456
66
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) 5 1 \0 t!=0 && pilha[t-1]==‘(‘?S Função 01234560123456
67
ESTRUTURA DE DADOS PILHA – Aula6 Função i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) 51 \0 0 01234560123456
68
ESTRUTURA DE DADOS PILHA – Aula6 i t s pilha 0 ( ( 0 0 ( ( 1 1 ( ( 2 2 ) 3 3 ) 4 2 ) 51 \0 6 0 01234560123456 retorna 1 Função
69
ESTRUTURA DE DADOS PILHA – Aula6 Conversão decimal para binário – outro clássico
70
ESTRUTURA DE DADOS PILHA – Aula6 #include #define TAM 40 using namespace std; void empilha(int p[], int & t, int v); void desempilha(int p[], int & t); int main() { int topo=-1, pilha[TAM],num, resto; cout<<"\nNumero em decimal:"; cin>>num;num=abs(num); while(num > 0) { resto=num %2; empilha(pilha, topo, resto); num/=2; } desempilha(pilha,topo); cout<<"\n\n"; system("pause"); } Código
71
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha -1 ? 14 01234.01234.
72
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha -1 ? 14 -1 0 14 01234.01234.
73
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha -1 ? 14 0 -1 0 14 0 0 14 01234.01234.
74
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha -1 ? 14 0 -1 0 14 0 0 14 0 0 7 01234.01234.
75
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha -1 ? 14 0 -1 0 14 0 0 14 0 0 7 0 1 7 01234.01234.
76
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha -1 ? 14 0 -1 0 14 1 0 0 14 0 0 7 0 1 7 1 1 7 01234.01234.
77
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha -1 ? 14 0 -1 0 14 1 0 0 14 0 0 7 0 1 7 1 1 7 1 1 3 01234.01234.
78
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha -1 ? 14 0 -1 0 14 1 0 0 14 0 0 7 0 1 7 1 1 7 1 1 3 01234.01234.
79
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha -1 ? 14 0 -1 0 14 1 0 0 14 1 0 0 7 0 1 7 1 1 7 1 1 3 2 1 3 01234.01234.
80
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha 2 1 1 0 1 01234.01234.
81
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha 2 1 1 0 2 1 1 1 1 01234.01234.
82
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha 2 1 1 0 2 1 1 1 3 1 1 1 1 01234.01234.
83
ESTRUTURA DE DADOS PILHA – Aula6 Função t resto num pilha 2 1 1 0 2 1 1 1 3 1 1 1 3 1 0 1 01234.01234. FIM - empilha
84
ESTRUTURA DE DADOS PILHA – Aula6 Função t pilha 3 0 1 012345012345
85
ESTRUTURA DE DADOS PILHA – Aula6 Função t pilha 3 0 1 012345012345 Saída
86
ESTRUTURA DE DADOS PILHA – Aula6 Função t pilha 3 0 2 1 1 012345012345
87
ESTRUTURA DE DADOS PILHA – Aula6 Função t pilha 3 0 2 1 1 012345012345 Saída
88
ESTRUTURA DE DADOS PILHA – Aula6 Função t pilha 3 0 2 1 1 012345012345
89
ESTRUTURA DE DADOS PILHA – Aula6 Função t pilha 3 0 2 1 1 012345012345 Saída
90
ESTRUTURA DE DADOS PILHA – Aula6 Função t pilha 3 0 2 1 1 0 012345012345
91
ESTRUTURA DE DADOS PILHA – Aula6 Função t pilha 3 0 2 1 1 0 012345012345 Saída
92
ESTRUTURA DE DADOS PILHA – Aula6 Função t pilha 3 0 2 1 1 0 012345012345 Saída FIM - desempilha
93
ESTRUTURA DE DADOS PILHA – Aula6
94
ESTRUTURA DE DADOS PILHA – Aula6 1) Inicializa () ou Init() 2) Empilhar() ou Push() 3) Desempilhar() ou Pop() 4) acessoTopo() ou Top() 5) verificaPilhaCheia() ou isFull() 6) verificaPilhaVazia() ou isEmpty()
95
ESTRUTURA DE DADOS PILHA – Aula6 0 PROBLEMA Uma carreta que transporta cinco carros. Cada carro, será preso a uma tranca que tem duas chaves. Uma que foi enviada ao proprietário e a outra com o motorista. Cada carro tem um código de saída, identificação(nome do proprietário, tipo de carro e endereço) e nota fiscal. A solução será apresentada com struct, funções matrizes(alocação contígua).
96
ESTRUTURA DE DADOS PILHA – Aula6 A struct
97
ESTRUTURA DE DADOS PILHA – Aula6 Inicialização
98
ESTRUTURA DE DADOS PILHA – Aula6 Protótipos Inicialização
99
ESTRUTURA DE DADOS PILHA – Aula6 #include #define TAM 5 using namespace std; struct atende { char identificacao[TAM][60]; long long notaFiscal[TAM]; int codigoSaida[TAM], topo; }; void empilha(atende & pilha); void desempilha(atende & pilha); void mostraTopo(atende & pilha); void lista(atende & pilha); Código 1
100
ESTRUTURA DE DADOS PILHA – Aula6 int main() { int op; atende carros; carros.topo=-1; do { system("cls"); cout<<"\nPILHA( LIFO- Last In - First Out )\n\n"; cout<<"\n1- Inserir carro"; cout<<"\n2- Remover carro"; cout<<"\n3- Mostrar o primeiro carro a sair"; cout<<"\n4- listar - QUESTAO DIDATICA. Remova depois que testar"; cout<<"\n5- Sai"; cout<<"\nOpcao: "; cin>>op; system("cls"); Código 2
101
ESTRUTURA DE DADOS PILHA – Aula6
102
ESTRUTURA DE DADOS PILHA – Aula6 switch(op) { case 1: cin.get(); empilha(carros); break; case 2: desempilha(carros); break; case 3: mostraTopo(carros); break; case 4: lista(carros); break; case 5: cout<<"\nAplicacao da PILHA\ n"; break; default: cout<<"\nOPCAO INVALIDA\n"; } cout<<"\n\n";system("pause"); }while(op!=5); } Código 3
103
ESTRUTURA DE DADOS PILHA – Aula6 void empilha(atende & pilha) { char id[60]; long long nf; int codS; if(pilha.topo == TAM-1) cout<<"\nATENCAO. Carreta Cheia\n"; else { cout<<"\nProprietatio/ Tipo de carro/ Destino:"; cin.getline(id, 60); cout >nf; cout >codS; pilha.topo++; //atualiza o topo // pilha recebe valor strcpy(pilha.identificacao[pilha.topo], id); pilha.notaFiscal[pilha.topo]=nf; pilha.codigoSaida[pilha.topo]=codS; } Código 4
104
ESTRUTURA DE DADOS PILHA – Aula6
105
ESTRUTURA DE DADOS PILHA – Aula6
106
ESTRUTURA DE DADOS PILHA – Aula6 void desempilha(atende & pilha) { if(pilha.topo == -1) cout<<"\nATENCAO. Carreta Vazia \n"; else { cout<<"\nCodigo do carro entregue: “; //* cout<< pilha.codigoSaida[pilha.topo]; cout<<"\nNota fiscal do carro entregue: “; //* cout<< pilha.notaFiscal[pilha.topo]; cout<<"\nIdentificacao do carro entregue: “; //* cout<< pilha.identificacao[pilha.topo]; pilha.topo--; //atualiza o topo } //* MELHORAR O ENTENDIMENTO. Código 5
107
ESTRUTURA DE DADOS PILHA – Aula6
108
ESTRUTURA DE DADOS PILHA – Aula6 void mostraTopo(atende & pilha) { if(pilha.topo == -1) cout<<"\nATENCAO. Carreta Vazia \n"; else { cout<<"\nCodigo do carro: “; //* cout<<pilha.codigoSaida[pilha.topo]; cout<<"\nNota fiscal do carro: “; //* cout<<pilha.notaFiscal[pilha.topo]; cout<<"\nIdentificacao do carro: “; //* cout<<pilha.identificacao[pilha.topo]; } } //* MELHORAR O ENTENDIMENTO. Código 6
109
ESTRUTURA DE DADOS PILHA – Aula6
110
ESTRUTURA DE DADOS PILHA – Aula6 void lista(atende & pilha) { if(pilha.topo == -1) cout<<"\nATENCAO. Carreta Vazia \n"; else { cout<<"\nOrdem de Saida\n"; for(int x=pilha.topo; x>=0; x--) { cout<<"\n\n"<<x+1<<"o carro"; cout<<"\nCodigo do carro: "<<pilha.codigoSaida[x]; cout<<"\nNota fiscal do carro: "<<pilha.notaFiscal[x]; cout<<"\nIdentificacao do carro: “; //* cout<<pilha.identificacao[x]; } } //* MELHORAR O ENTENDIMENTO. Código 7
111
ESTRUTURA DE DADOS PILHA – Aula6
112
ESTRUTURA DE DADOS PILHA – Aula6 Resumindo
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.