1 / 13

ESTRUTURA DE DADOS

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

renate
Download Presentation

ESTRUTURA DE DADOS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  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”. ESTRUTURA DE DADOS Profa. Juliana Mafra

  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

  5. a0 a1 a2 ... 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 typedefinttelem; typedefstruct{ telem v[MAX]; int inicio; int final; } tfila; 0 1 2 MAX -1 final início ESTRUTURA DE DADOS Profa. Juliana Mafra

  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 (tfilaf, telem *dado) { if (vazia(f)) return 0; *dado = f.v[f.inicio]; return (1); } ESTRUTURA DE DADOS Profa. Juliana Mafra

  7. a0 a1 a2 ... Operações sobre Filas: Arranjos • Inserir um elemento no fim de uma fila 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); } 0 1 2 MAX -1 ESTRUTURA DE DADOS Profa. Juliana Mafra

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

  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

  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ó. typedefint telem; typedefstruct no { telem dado; struct no* prox; } tno; typedefstruct fila { tno* inicio; tno* final; } tfila; 5 8 1 dado|prox dado|prox inicio final Indicador do fim da fila (referência null) ESTRUTURA DE DADOS Profa. Juliana Mafra

  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 (tfilaf, telem * valor) { if (vazia(f)) return0; *valor = (f.inicio)->dado; return 1; } ESTRUTURA DE DADOS Profa. Juliana Mafra

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

  13. 1 9 2 Operações sobre Filas: Apontadores • Remover um elemento do início de uma fila 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

More Related