Buscar

pilha estrutura de dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Estrutura de dadosEstrutura de dados
Pilha Pilha 
20132013
Prof Melo
Apresentação
• Técnico em Desenvolvimento de Sistemas - Ibratec, Recife-PE
• Bacharel em Sistemas de Informação – FIR, Recife-PE
• Especialista em Docência no Ensino Superior – Faculdade 
Maurício de Nassau, Recife-PE
• Mestre em Ciência da Computação – UFPE/CIN, Recife-PE
• Currículo Lattes http://lattes.cnpq.br/0759508594425296)
• Homepage https://sites.google.com/site/hildebertomelo/
Disciplinas Lecionadas
• Desenvolvimento de Aplicações Desktop
• Programação Orientada a Objetos
• Estrutura de Dados
• Tecnologia da Informação & Sociedade
• Sistemas Operacionais
• Sistemas Distribuídos
• Introdução a Informática
• Lógica de Programação
• Informática Aplicada a Saúde
• Banco de Dados
• Projeto de Banco de Dados
• Análise de Projetos Orientado a Objetos
• Programação Cliente Servidor
• Linguagens de Programação: C, C#, Pascal, PHP, ASP, Delphi, Java, JavaScript
• Programação WEB
PILHA
• Uma pilha é um tipo especial de lista linear em que todas as 
operações de inserção, remoção ou consulta são realizadas em 
uma só extremidade, denominada TOPO.
• Cada vez que um novo elemento deve ser inserido na pilha, ele é
colocado no seu topo; e em qualquer momento, apenas aquele 
posicionado no topo da pilha pode ser removido. Percebemos 
claramente um padrão de comportamento que indica que o 
último elemento a ser inserido (empilhado), é o primeiro 
elemento a ser removido. Esse é o motivo das pilhas serem 
também referenciadas como uma estrutura LIFO (‘Last In, First 
Out’).
PILHA
• Por definição, uma lista LIFO é uma estrutura dinâmica, ou seja, é uma 
coleção que pode aumentar e diminuir durante a sua existência. Aliás, o 
nome pilha, usado como sinônimo para lista LIFO, advém justamente da 
semelhança entre o modo como as listas LIFO crescem/diminuem e o 
modo como as pilhas no mundo real, funcionam, O exemplo mais 
comum do quotidiano e uma pilha de pratos, porque ela aumenta e 
diminui somente por um único lado: o seu topo. Nessa analogia, 
percebemos que o topo é o que se movimenta, e não a base.
• Por definição, uma lista LIFO é uma estrutura dinâmica, ou seja, é uma 
coleção que pode aumentar e diminuir durante a sua existência. Aliás, o 
nome pilha, usado como sinônimo para lista LIFO, Advém justamente da 
semelhança entre o modo como as listas LIFO crescem/diminuem e o 
modo como as pilhas, no mundo real, funcionam.
PILHA
• Uma pilha suporta três operações básicas, 
tradicionalmente denominadas como: 
• - Top: acessa o elemento posicionado no topo 
da pilha;
• - Push: insere um novo elemento no topo da 
pilha;
• - Pop: remove um elemento do topo da pilha.
PILHA
• Exemplos de declaração de uma PILHA em 
C
Typedef struct registro{ 
char nome[60];
int idade;
float salario; 
}tregistro;
Typedef struct pilha{
struct registro dado;
struct pilha *abaixo;
}tpilha;
Tpilha *topo;
Inserir – PILHA - Passos
• Alocar memória para um elemento auxiliar 
do tipo pilha
• Verificar se a PILHA está vazia
–Não – vazia
• Este elemento recém criado deverá apontar o topo da 
pilha
• O topo da pilha deverá apontar para o 
mesmo endereço de memória do elemento 
auxiliar recém criado
Inserir PILHA - PUSH
• void Inserir () {
– Tpilha * aux = (Tpilha *)malloc (sizeof(Tpilha));
– if (*topo != NULL) {
• (*aux).abaixo = *topo;
– } 
– *topo = *aux;
– Scanf(“%s”,(*topo).dado.nome);
– Scanf(“%i”,(*topo).dado.idade);
– Scanf(“%f”,(*topo).dado.salario);
• }
Ler – PILHA - Passos
• Verificar se a PILHA está vazia
–Sim – vazia
• Exibir mensagem de pilha vazia
–Não – vazia
• Exibir as informações do topo da pilha
Ler PILHA - TOP
• void ler () {
– if (*topo != NULL) {
• printf(“%s”,(*topo).dado.nome);
• printf(“%i”,(*topo).dado.idade);
• printf(“%f”,(*topo).dado.salario);
– } else{
• Printf(“Pilha vazia”);
– }
• }
Remover – PILHA - Passos
• declarar um elemento auxiliar do tipo pilha, para 
marcar o topo que deverá ser removido
• Verificar se a PILHA está vazia
– Não – vazia
• Marcar o topo da pilha com a variável auxiliar
• Atualizar o topo da pilha, o topo deverá ser o elemento logo 
abaixo do topo
• Devolver a memória do antigo topo (aux)
– Sim
• Exibir a mensagem pilha vazia
Remover PILHA - POP
• void remover () {
– Tpilha * aux; 
– if (*topo != NULL) {
• (*aux) = *topo;
• (*topo) = (*topo).abaixo;
• Free(*aux);
– } else{
• Printf(“pilha vazia”);
– }
• }
Destruir - PILHA
• Ao terminar o programa deveremos 
devolver todos os espaços de memória 
requisitados, para isso criaremos um 
procedimento para destruir a PILHA
Destruir - PILHA
• void Destruir () {
• TPilha *aux = (*topo);
• while (*topo != NULL) {
• (*topo) = *topo.abaixo;
• free (*aux);
• *aux = (*topo);
• }
• (*topo) = NULL;
• }
Perguntas...
Bibliografia
• Livro(s) Texto(s):
• PREISS, Bruno R. Estrutura de Dados e 
Algoritmos. Rio de Janeiro: Campus, 2001.
• PEREIRA, Silvio L. Estruturas de dados 
fundamentais. São Paulo: Érica, 2000.
• AZEREDO, Paulo A. Métodos de 
Classificação de Dados e Análise de suas 
Complexidades. Rio de Janeiro: Campus, 
1995.
Bibliografia
• Livros de referencia:
• WEISS, M. A. Data structures and algorithm 
analysis in C++. California: Benjamin/Cummings, 
1999.
• SEDGEWICK, R. Algorithms in C++: Fundamentals, 
data structures, sorting, searching. New York: 
Addison-Wesley, 2001.
• TANENBAUM, Aaron; LANGSAM, Y. & 
AUGENSTEIN, M. Estruturas de Dados usando C. 
São Paulo: Makron Books, 1995.
• LAFORE, R. Aprenda em 24 horas estrutura de 
dados e algoritmo. Rio de Janeiro: Campus, 1999.
• MORAES, Celso R. Estruturas de Dados e 
Algoritmos. São Paulo: Berkeley Brasil, 2001.

Outros materiais