A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

ESTRUTURA DE DADOS Aula 6 – Pilha. ESTRUTURA DE DADOS PILHA – Aula6 Atenção aos Temas Principais dessa Aula.

Apresentações semelhantes


Apresentação em tema: "ESTRUTURA DE DADOS Aula 6 – Pilha. ESTRUTURA DE DADOS PILHA – Aula6 Atenção aos Temas Principais dessa Aula."— Transcrição da apresentação:

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


Carregar ppt "ESTRUTURA DE DADOS Aula 6 – Pilha. ESTRUTURA DE DADOS PILHA – Aula6 Atenção aos Temas Principais dessa Aula."

Apresentações semelhantes


Anúncios Google