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

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

Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.

Apresentações semelhantes


Apresentação em tema: "Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco."— Transcrição da apresentação:

1 Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

2 Tipos Especiais de Listas ESTRUTURA DE DADOS Profa. Juliana Mafra 2 Pilhas

3 3 São listas onde a inserção de um novo item ou a remoção de um item já existente se dá em uma única extremidade, no topo. Os itens são colocados um sobre o outro. O item inserido mais recentemente está no topo e o inserido menos recentemente no fundo. Propriedade: o último item inserido é o primeiro item que pode ser retirado da lista. São chamadas listas lifo (“last-in, first-out”). ESTRUTURA DE DADOS Profa. Juliana Mafra

4 TAD Pilhas: Operações 4 Criar uma pilha P vazia Testar se P está vazia Obter o elemento do topo da pilha (sem eliminar) Inserir um novo elemento no topo de P (empilhar/push) Remover o elemento do topo de P (desempilhar/pop) ESTRUTURA DE DADOS Profa. Juliana Mafra

5 Pilhas: Implementações 5 Existem várias opções de estruturas de dados que podem ser usadas para representar pilhas. As duas representações mais utilizadas são as implementações por meio de arranjos e de apontadores. ESTRUTURA DE DADOS Profa. Juliana Mafra

6 Implementação de Pilhas: Arranjos 6 Os itens da pilha são armazenados em posições contíguas de memória. Como as inserções e as retiradas ocorrem no topo da pilha, um ponteiro chamado topo é utilizado para controlar a posição do item no topo da pilha. ESTRUTURA DE DADOS Profa. Juliana Mafra... a0a0 a1a1 a2a2 012 MAX -1 topo #define MAX 10 typedef int telem; typedef struct { telem v[MAX]; int topo; } tpilha

7 Operações sobre Pilhas: Arranjos 7 Criar uma pilha vazia Obter o elemento do topo da pilha (sem eliminar) ESTRUTURA DE DADOS Profa. Juliana Mafra void criar (tpilha *p){ p->topo = -1; } int elemtopo (tpilha p, telem *valor){ if (vazia(p)) return 0; *valor = p.v[p.topo]; return 1; }

8 Operações sobre Pilhas: Arranjos 8 Inserir um novo elemento no topo da pilha (empilhar) ESTRUTURA DE DADOS Profa. Juliana Mafra int push (tpilha *p, telem valor) { if (p->topo == MAX-1) return 0; /* pilha cheia*/ p->topo++; p->v[p->topo] = valor; return 1; }... a0a0 a1a1 a2a2 012 MAX -1 topo 3 a3a3

9 Operações sobre Pilhas: Arranjos 9 Remover o elemento do topo da pilha (desempilhar) ESTRUTURA DE DADOS Profa. Juliana Mafra int pop (tpilha *p, telem *valor){ if (vazia(*p)) return 0; *valor = p->v[p->topo]; v[p->topo--]; return 1; }... a0a0 a1a1 a2a2 012 MAX -1 topo 3 a3a3

10 Implementação de Pilhas: Apontadores 10 Permite utilizar posições não contíguas de memória. Cada nó contém um item da pilha e um apontador para o nó seguinte. Toda pilha possui um apontador chamado topo que aponta para o primeiro nó da pilha. ESTRUTURA DE DADOS Profa. Juliana Mafra typedef int telem; typedef struct no{ telem dado; struct no* prox; } tno; typedef tno* tpilha; 5 topo 81 Indicador do fim da pilha (referência null) dado|prox

11 Operações sobre Pilhas: Apontadores 11 Criar uma pilha vazia Obter o elemento do topo da pilha (sem eliminar) ESTRUTURA DE DADOS Profa. Juliana Mafra void criar (tpilha *p){ *p = NULL; } int elemtopo (tpilha p, telem *elem) { if (vazia(p)) return 0; *elem = p->dado; return 1; }

12 Operações sobre Pilhas: Apontadores 12 Inserir um novo elemento no topo da pilha (empilhar) ESTRUTURA DE DADOS Profa. Juliana Mafra int push (tpilha *p, telem valor){ tpilha novo; novo = (tno *) malloc(sizeof(tno)); novo->dado = valor; novo->prox = *p; *p = novo; return 1; } 5 topo 8 9 novo nó

13 Operações sobre Pilhas: Apontadores 13 Remover o elemento do topo da pilha (desempilhar), ESTRUTURA DE DADOS Profa. Juliana Mafra int pop (tpilha *p, telem *valor) { tpilha atual; if (vazia(*p)) return 0; atual = *p; *valor = (*p)->dado; *p = atual->prox; free(atual); return 1; } 129 atual topo...

14 Pilha Sequencial x Encadeada 14 No caso geral de listas ordenadas, a maior vantagem da alocação encadeada sobre a sequencial - se a memória não for problema - é a eliminação de deslocamentos na inserção ou eliminação dos elementos. No caso das pilhas, essas operações de deslocamento não ocorrem. Portanto, podemos dizer que a alocação sequencial é mais vantajosa na maioria das vezes. ESTRUTURA DE DADOS Profa. Juliana Mafra


Carregar ppt "Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco."

Apresentações semelhantes


Anúncios Google