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

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

Marco Antonio Montebello Júnior

Apresentações semelhantes


Apresentação em tema: "Marco Antonio Montebello Júnior"— Transcrição da apresentação:

1 Marco Antonio Montebello Júnior marco.antonio@aes.edu.br
Pilhas Estrutura de Dados Marco Antonio Montebello Júnior

2 Introdução a Computação
Pilhas Estrutura de dados variável LIFO – Last In, First Out (Último a entrar é o primeiro a sair) FILO = First In, Last Out (Primeiro que entra é o último a sair) Aplicações: Análise de expressões Conversão de notações Introdução a Computação

3 Representando Pilhas com Vetor
Possui uma quantidade prévia de elementos Pilha É dinâmica Aumenta e diminui conforme empilhamos e desempilhamos os elementos Pilhas e Vetores são estruturas diferentes Iremos utilizar inicialmente vetores para representarmos as pilhas Introdução a Computação

4 Introdução a Computação
Pilhas ENTRADA SAÍDA TOPO Elemento 2 Elemento 1 BASE Introdução a Computação

5 Introdução a Computação
Representado a Pilha Vamos utilizar uma estrutura (struct) para representar a nossa pilha que será chamada de stack #define MAXPILHA 100 struct stack { int Topo; int Item[MAXPILHA]; }; Introdução a Computação

6 Introdução a Computação
Representado a Pilha Levando em consideração a estrutura criada, podemos declarar uma pilha da seguinte maneira: struct stack s; Introdução a Computação

7 Entendimento da Estrutura
Item Vetor onde os elementos que são empilhados são armazenados Topo Armazena a posição que se encontra o último elemento da pilha Quando a pilha estiver vazia o topo é igual à -1 Introdução a Computação

8 Manipulação de Pilhas Iniciando uma Pilha
Inicializa uma Pilha O topo da pilha passa a ter o valor -1, o qual indica que a mesma está vazia O vetor não precisa ser inicializado com 0’s (zeros) void IniciaPilha(struct stack *ps); IniciaPilha(&s); Introdução a Computação

9 Manipulação de Pilhas Verificando Limites
Pilha Vazia Verifica se a pilha está vazia Retorna: True – Quando estiver realmente vazia (1) False – Quando não estiver vazia (0) int iPilhaVazia(struct stack *ps); iRet = iPilhaVazia(&s); Introdução a Computação

10 Manipulação de Pilhas Verificando Limites
Pilha Cheia Verifica se a pilha está cheia Retorna: True – Quando estiver realmente cheia (1) False – Quando não estiver cheia (0) int iPilhaCheia(struct stack *ps); iRet = iPilhaCheia(&s); Introdução a Computação

11 Manipulação de Pilhas Empilhando um Elemento (push)
Adiciona um elemento no topo da pilha É chamada de PUSH Deve-se sempre verificar se a pilha já não está cheia int iPush(struct stack *ps, int iVal); iRet = iPush(&s, iNum); Introdução a Computação

12 Manipulação de Pilhas Desempilhando um Elemento (pop)
Retira um elemento do topo da pilha É chamada de POP Deve-se verificar se a pilha não está vazia int iPop(struct stack *ps); iRet = iPop(&s); Introdução a Computação

13 Manipulação de Pilhas Consultando o Topo da Pilha
Consulta o elemento do topo da pilha sem desempilhar o mesmo int iElemTopo(struct stack *ps); iRet = iElemTopo(&s); Introdução a Computação

14 Introdução a Computação
Exemplo de Pilhas Exemplo do Trem Demonstrar a execução do programa de Pilhas Introdução a Computação

15 Introdução a Computação
Exercícios Utilizando as funções de PUSH e POP de pilhas, coloque na ordem determinada as letras que se encontrar em uma Pilha P1 na Pilha P2, pode ser utilizada uma variável auxiliar para realizar as trocas Frase Original: AES-SI Introdução a Computação

16 Introdução a Computação
Exercícios Utilizando pilhas, crie um algoritmo que reordene um conjunto de dados fornecido pelo usuário tal que o primeiro e o último elementos devem ser trocados de posição e todos os elementos entre o primeiro e o último deve também ser trocados relativamente Ex.: { } { } Introdução a Computação

17 Introdução a Computação
Exercícios Utilizando pilhas, crie um algoritmo que converta um número decimal para binário. Ps.: A conversão de números binários para decimal se dá através da divisão sucessiva dos resultados até que o mesmo seja 0 ou 1 Exemplo: (100011)2 = (35)10 Introdução a Computação

18 Introdução a Computação
Exercícios Um palavra é considerada palíndroma se ela pode se lida da esquerda para a direita ou da direita para a esquerda com o mesmo significado. Neste caso não podemos considerar as acentuações, as letras maiúsculas ou minúsculas, os espaços e os caracteres especiais. Exemplos: Subi no Onibus Radar Ana Go dog Utilizando pilhas, desenvolva um algoritmo que determine se uma expressão é palíndroma ou não. Introdução a Computação


Carregar ppt "Marco Antonio Montebello Júnior"

Apresentações semelhantes


Anúncios Google