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

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

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

Apresentações semelhantes


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

1 Profa. Juliana Mafra ESTRUTURA DE DADOS 03 de Outubro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

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

3 3 É uma lista linear em que todas as inserções são realizadas em um extremo da lista (fim), e todas as retiradas são realizados no outro extremo da lista (início). São chamadas listas fifo (“first-in”, “first-out”). Existe uma ordem linear para filas que é a “ordem de chegada”. São utilizadas quando desejamos processar itens de acordo com a ordem “primeiro-que-chega, primeiro-atendido”. ESTRUTURA DE DADOS Profa. Juliana Mafra

4 TAD Filas: Operações 4 Criar uma fila vazia Testar se um fila está vazia Obter o elemento do início de uma fila Inserir um elemento no fim de uma fila Remover o elemento do início de uma fila, retornando o elemento removido. ESTRUTURA DE DADOS Profa. Juliana Mafra

5 Implementação de Filas: Arranjos 5 Os itens são armazenados em posições contíguas de memória. A operação Inserir faz a parte de trás da fila expandir-se. A operação Remover faz a parte da frente da fila contrair-se. ESTRUTURA DE DADOS Profa. Juliana Mafra #define MAX 10 typedef int telem; typedef struct{ telem v[MAX]; int inicio; int final; } tfila;... a0a0 a1a1 a2a2 012 MAX -1 início final

6 Operações sobre Filas: Arranjos 6 Criar uma fila vazia Obter o elemento do início da fila ESTRUTURA DE DADOS Profa. Juliana Mafra void criar (tfila *f){ f->inicio = 0; f->final = -1; } int primeiro (tfila f, telem *dado) { if (vazia(f)) return 0; *dado = f.v[f.inicio]; return (1); }

7 Operações sobre Filas: Arranjos 7 Inserir um elemento no fim de uma fila ESTRUTURA DE DADOS Profa. Juliana Mafra int inserir (tfila *f, telem valor) { if (f->final == MAX-1) return 0; (f->final)++; f->v[f->final] = valor; return(1); }... a0a0 a1a1 a2a2 012 MAX -1 final 3 a3a3 inicio

8 Operações sobre Filas: Arranjos 8 Remover o elemento do início de uma fila ESTRUTURA DE DADOS Profa. Juliana Mafra int remover (tfila *f, telem *dado){ if (vazia(*f)) return 0; *dado = f.v[F.inicio]; (f->inicio)++; return(1); }... a1a1 a2a2 012 MAX -1 final 3 a3a3 inicio a0a0

9 Implementação de Filas: Arranjos 9 Problema: A fila tende a caminhar pela memória do computador, ocupando espaço na parte de trás e descartando espaço na parte da frente (overflow). Solução: Imaginar o arranjo como um círculo (a primeira posição segue a última). ESTRUTURA DE DADOS Profa. Juliana Mafra

10 Implementação de Filas: Apontadores 10 A fila é implementada por meio de nós. Cada nó contém um item da fila e um apontador para outro nó. ESTRUTURA DE DADOS Profa. Juliana Mafra 581 Indicador do fim da fila (referência null) dado|prox finalinicio typedef int telem; typedef struct no { telem dado; struct no* prox; } tno; typedef struct fila { tno* inicio; tno* final; } tfila;

11 Operações sobre Filas: Apontadores 11 Criar uma fila vazia Obter o elemento do início de uma fila ESTRUTURA DE DADOS Profa. Juliana Mafra void criar (tfila *f) { f->inicio = f->final = NULL; } int primeiro (tfila f, telem * valor) { if (vazia(f)) return 0; *valor = (f.inicio)->dado; return 1; }

12 Operações sobre Filas: Apontadores 12 Inserir um elemento no fim de uma fila ESTRUTURA DE DADOS Profa. Juliana Mafra int inserir (tfila *f, telem valor) { tno *novo; novo = (tno*) malloc(sizeof(tno)); novo->dado = valor; novo->prox = NULL; (f->final)->prox = novo; f->final = novo; return 1; } 581 finalinicio 9 novo nó

13 Operações sobre Filas: Apontadores 13 Remover um elemento do início de uma fila ESTRUTURA DE DADOS Profa. Juliana Mafra int remover (tfila *f, telem *valor){ tno *atual; if (vazia(*f)) return 0; *valor = (f.inicio)->dado; atual = f->inicio; f->inicio = (f->inicio)->prox; free(atual); return 1; } 129 finalinicio atual


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

Apresentações semelhantes


Anúncios Google