FilasEncadeadas
Estruturas de Dados I
Universidade Luterana do Brasil
Prof Fabiana Lorenzi
Filas
● FIFO - First in first out
● O primeiro a entrar é o primeiro a sair
● Dentre os elementos que ainda permanecem no ...
Exemplosdefilas
fila de impressão
fila de banco
3
Operaçõespossíveisemumafila
O acesso a uma fila é realizado somente de 2 formas:
Enfileirar
(inserir um novo elemento no f...
Filasencadeadas
Registro tfila
inteiro dado
registro tfila *próximo
fim
5
FilasencadeadascomHeader
Registro tfila
inteiro dado
registro tfila *próximo
fim
Registro header
registro tfila *começo
in...
Enfileiras-filasencadeadas
Procedimento Enfileira (ref registro header *F; inteiro
valor; ref inteiro sinal);
inicio
regis...
Enfileirarsemheader-emC
void enfileirar(nodo **fila, int valor) {
nodo *aux;
nodo *p = (nodo *)malloc(sizeof(nodo));
p->da...
Desenfileirar-filasencadeadascom
HeaderFuncao Desenfileira (ref registro header *F; ref inteiro
sinal)
inicio
inteiro valo...
Desenfeileirarsemheader-emC
int desenfileirar(nodo **fila) {
int valor;
struct nodo *aux;
aux = *fila;
valor = aux->dados;...
Exercício
1) Escrever as seguintes subrotinas para a manipulação de
uma fila encadeada (sem header):
a) Procedimento para ...
Exercício
3) Escreva um programa que recebe um número indeterminado de
valores positivos e negativos (sai quando o usuário...
Próximos SlideShares
Carregando em…5
×

Filas encadeadas

175 visualizações

Publicada em

Aula de filas encadeadas

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
175
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Filas encadeadas

  1. 1. FilasEncadeadas Estruturas de Dados I Universidade Luterana do Brasil Prof Fabiana Lorenzi
  2. 2. Filas ● FIFO - First in first out ● O primeiro a entrar é o primeiro a sair ● Dentre os elementos que ainda permanecem no conjunto, o primeiro elemento a ser retirado é o primeiro que foi inserido ● Toda fila deve ter uma começo e um final (usar variáveis para indicar cada um deles) 2
  3. 3. Exemplosdefilas fila de impressão fila de banco 3
  4. 4. Operaçõespossíveisemumafila O acesso a uma fila é realizado somente de 2 formas: Enfileirar (inserir um novo elemento no final da fila). Desenfileirar (remover o elemento do início da fila). 4
  5. 5. Filasencadeadas Registro tfila inteiro dado registro tfila *próximo fim 5
  6. 6. FilasencadeadascomHeader Registro tfila inteiro dado registro tfila *próximo fim Registro header registro tfila *começo inteiro qtde registro tfila *final fim 6
  7. 7. Enfileiras-filasencadeadas Procedimento Enfileira (ref registro header *F; inteiro valor; ref inteiro sinal); inicio registro tfila *aux, *p aloca(p); se (p = nulo) entao sinal = 0 senao inicio p->dado = valor p->próximo = nulo aux = F->final F->final = p se (F->começo = nulo) {Se fila estiver vazia....} entao F->começo = p senao sinal = 1 aux->próximo = p; fim F->qtde++ fim 7
  8. 8. Enfileirarsemheader-emC void enfileirar(nodo **fila, int valor) { nodo *aux; nodo *p = (nodo *)malloc(sizeof(nodo)); p->dados = valor; p->proximo = NULL; if(*fila == NULL) { // Fila vazia *fila = p; } else { aux = *fila; while(aux->proximo != NULL) { aux = aux->proximo; } aux->proximo = p; } } 8
  9. 9. Desenfileirar-filasencadeadascom HeaderFuncao Desenfileira (ref registro header *F; ref inteiro sinal) inicio inteiro valor=0 registro tfila *aux se (F->comeco = nulo) entao sinal = 0 senao inicio aux = F->comeco valor = aux->dado F->comeco = aux->proximo se (aux = F->final) entao F->final = nulo libera(aux) F->qtde-- sinal = 1 fim retorna valor fim 9
  10. 10. Desenfeileirarsemheader-emC int desenfileirar(nodo **fila) { int valor; struct nodo *aux; aux = *fila; valor = aux->dados; *fila = aux->proximo; free(aux); return valor; } 10
  11. 11. Exercício 1) Escrever as seguintes subrotinas para a manipulação de uma fila encadeada (sem header): a) Procedimento para a inclusão de um novo na fila; b) Função para a remoção de um valor da fila c) Procedimento para exibir o conteúdo da fila; d) Função que retorna true se a fila estiver vazia; 2) Faça um programa em C que utilize as subrotinas criadas na questão anterior. 11
  12. 12. Exercício 3) Escreva um programa que recebe um número indeterminado de valores positivos e negativos (sai quando o usuário digitar 0) e: - se o valor digitado for negativo, remove o primeiro elemento da fila; - se o valor digitado já existir na fila, remover a primeira ocorrência dele na fila. 12

×