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

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

Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS

Apresentações semelhantes


Apresentação em tema: "Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS"— Transcrição da apresentação:

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

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

3 Filas É 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”. O modelo intuitivo de uma fila é o de uma fila de espera em que as pessoas no início da filas são servidas primeiro e as pessoas que chegam entram no fim da fila. ESTRUTURA DE DADOS Profa. Juliana Mafra Estrutura de Dados

4 TAD Filas: Operações 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 Estrutura de Dados

5 Implementação de Filas: Arranjos
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. #define MAX 10 typedef int telem; typedef struct{ telem v[MAX]; int inicio; int final; } tfila; ... a0 a1 a2 1 2 MAX -1 início final ESTRUTURA DE DADOS Profa. Juliana Mafra Estrutura de Dados

6 Operações sobre Filas: Arranjos
Criar uma fila vazia Obter o elemento do início da fila 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); } ESTRUTURA DE DADOS Profa. Juliana Mafra Estrutura de Dados

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

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

9 Implementação de Filas: Arranjos
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 Estrutura de Dados

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

11 Operações sobre Filas: Apontadores
Criar uma fila vazia Obter o elemento do início de uma fila 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; } ESTRUTURA DE DADOS Profa. Juliana Mafra Estrutura de Dados

12 Operações sobre Filas: Apontadores
Inserir um elemento no fim de uma fila 5 8 1 9 novo nó 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; } inicio final ESTRUTURA DE DADOS Profa. Juliana Mafra Estrutura de Dados

13 Operações sobre Filas: Apontadores
Remover um elemento do início de uma fila 1 2 9 atual 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; } inicio final ESTRUTURA DE DADOS Profa. Juliana Mafra Estrutura de Dados


Carregar ppt "Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS"

Apresentações semelhantes


Anúncios Google