Buscar

Estrutura de Dados Dinâmica Fila

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

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

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ê viu 3, do total de 9 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

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

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ê viu 6, do total de 9 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

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

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ê viu 9, do total de 9 páginas

Prévia do material em texto

ESTRUTURAS DE DADOS D INÂMICAS – F ILAS
Algoritmos II
DAMAS, Luís. Linguagem C - 10. ed. / ©2007 Rio de Janeiro, RJ: Livros Técnicos e Científicos, ©2007.
Conceito
� Uma das possiveis aplicações da alocação dinâmica
de memória se dá através da implementação de uma
estrutura classica denominada Fila
� Uma fila é carcterizada basicamente por um regra:
� O primeiro a entrar é o primeiro a sair, obedecendo assim uma
estratégia FIFO (First In First Out)
� Como não sabemos inicialmente a quantidade de 
individuos que uma fila de espera pode ter, 
precisamos criar uma fila que aumente ou diminua
conforme a necessidade
DAMAS, Luís. Linguagem C - 10. ed. / ©2007 Rio de Janeiro, RJ: Livros Técnicos e Científicos, ©2007.
Conceito
� Para esta tarefa, precisamos de uma estrutura
composta pelos dados que serão armazenados e um 
ponteiro para a próxima posição da fila.
� Portanto, a fila será suportada por um ponteiro
� Se o ponteiro for NULL é porque a fila está vazia
� Se não, é porque tem pelo menos um elemento
DAMAS, Luís. Linguagem C - 10. ed. / ©2007 Rio de Janeiro, RJ: Livros Técnicos e Científicos, ©2007.
Conceito
� Uma Fila vazia pode ser representada por um 
ponteiro ligado a terra:
� Ao adicionarmos o próximo elemento da Fila, o 
estado desta seria o seguinte:
Idade 10
Nome Tiago
Prox
DAMAS, Luís. Linguagem C - 10. ed. / ©2007 Rio de Janeiro, RJ: Livros Técnicos e Científicos, ©2007.
Conceito
� Cada vez que for inserido um novo elemento na Fila, 
este será sempre colocado no final:
� Para retirar um elemento da fila, este deve sair
sempre pela ordem em que entrou. 
� Com base no exemplo, o primeiro a sair terá que ser
Tiago, a seguir Luísa e por fim Ana
Idade 30
Nome Ana
Prox
Idade 10
Nome Tiago
Prox
Idade 20
Nome Luísa
Prox
DAMAS, Luís. Linguagem C - 10. ed. / ©2007 Rio de Janeiro, RJ: Livros Técnicos e Científicos, ©2007.
Exemplo
//inicio do código e criação da estrutura de pessoa
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct sPessoa
{
int Idade;
char Nome[20+1];
struct sPessoa *Prox;
} PESSOA;
typedef PESSOA *FILA;
...
DAMAS, Luís. Linguagem C - 10. ed. / ©2007 Rio de Janeiro, RJ: Livros Técnicos e Científicos, ©2007.
Exemplo
//Insere um novo registro no fim da Fila
void Inserir(FILA *Fila, int Idade, char *Nome)
{
if (*Fila == NULL)
{
*Fila = (FILA) malloc(sizeof(PESSOA));
if(*Fila==NULL) return;
(*Fila)->Idade = Idade;
strcpy((*Fila)->Nome, Nome);
(**Fila).Prox = NULL;
}
else
Inserir(& (**Fila).Prox, Idade, Nome);
}
...
DAMAS, Luís. Linguagem C - 10. ed. / ©2007 Rio de Janeiro, RJ: Livros Técnicos e Científicos, ©2007.
Exemplo
//Apaga o primeiro elemento da Fila (se existir)
void Apagar (FILA *Fila)
{ PESSOA *Tmp = *Fila;
if (*Fila == NULL) /* Não existem elementos */
return;
*Fila = (*Fila)-> Prox;
free(Tmp);
}
//Lista todos os elementos da Fila recursivamente
void Listar (FILA Fila)
{
if (Fila==NULL)
return; /* Não existem elementos */
printf("%d %s\n",Fila->Idade, Fila->Nome);
Listar(Fila->Prox); /* Lista os outros */
}
...
DAMAS, Luís. Linguagem C - 10. ed. / ©2007 Rio de Janeiro, RJ: Livros Técnicos e Científicos, ©2007.
Exemplo
main(){
FILA F;
Inic(&F);
puts("Iniciar:");
Listar(F);
puts("Inserir: ");
Inserir(&F,10,"Tiago");
Inserir(&F,20,"Luisa");
Inserir(&F,30,"Ana");
puts("Listar 3");
Listar(F);
Apagar(&F);
puts("Listar 2");
Listar(F);
Apagar(&F);
puts("Listar 1");
Listar(F);
Apagar(&F);
puts("Listar Nada");
Listar(F);
Apagar(&F);
puts("Listar Nada");
Listar(F);
}
DAMAS, Luís. Linguagem C - 10. ed. / ©2007 Rio de Janeiro, RJ: Livros Técnicos e Científicos, ©2007.

Outros materiais