Filas: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 15: Linha 15:


Considere uma fila '''q''' e um item '''x''', a função
Considere uma fila '''q''' e um item '''x''', a função
  insert(q, x)
  insere(q, x)
insere o item x na fila q;
insere o item x na fila q;
  x = remove(q)
  x = remove(q)
remove o item do início da fila;
remove o item do início da fila;
  empty(q)
  vazia(q)
verifica se a fila está vazia.
verifica se a fila está vazia.


Linha 26: Linha 26:
==Imlementação de filas em linguagem C==
==Imlementação de filas em linguagem C==


Na '''linguagem C''', uma das maneiras de implememtar uma '''fila''' é utilizando '''vetores'''.  
Na '''linguagem C''', uma das maneiras de implememtar uma '''fila''' é utilizando um '''vetor''' para armazenar a fila e mais '''duas variáveis''' para armazenar o '''início''' e o '''final''' da fila <ref name="TENENBAUM"/> <ref name="FEOFILOFF">FEOFILOFF, p. '''Projeto de algoritmos em C''': Filas. http://www.ime.usp.br/~pf/algoritmos/aulas/fila.html</ref>.


<ref name="TENENBAUM"/> <ref name="FEOFILOFF">FEOFILOFF, p. '''Projeto de algoritmos em C''': Filas. http://www.ime.usp.br/~pf/algoritmos/aulas/fila.html</ref>.
====Declaração da fila====
Poderíamos '''declarar''' uma fila '''q''' de inteiros como uma estrutura, com três campos:
#define TAM 100
struct fila {
  int inicio, final;
  int itens[TAM];
} q;
</source>


====Operação insere====
'''Insere item''' recebido como argumento no '''final da fila'''.
<source lang="c">
void insere(struct fila *q, int x)
{
  q->itens[q->final] = x;
  q->final = p->final +1;
}
</source>


====Operação remove====
'''Extrai e retorna item''' do '''início da fila'''.
<source lang="c">
<source lang="c">
#define TAM 100
int remove(struct fila *q)
struct pilha {
{
  int topo;
  return q->itens[q->inicio];
  int itens[TAM];
  q->inicio = p->inicio +1;
};
}
</source>
</source>


==Referências==
==Referências==
Linha 44: Linha 62:


----
----
--[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 16h49min de 17 de julho de 2014 (BRT)
--[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 12h16min de 30 de setembro de 2014 (BRT)
----
----


[[Categoria:Estruturas de Dados]]
[[Categoria:Estruturas de Dados]]

Edição das 15h16min de 30 de setembro de 2014

Filas

Uma fila é um conjunto ordenado de itens, na qual itens podem ser extraídos de uma extremidade (início da fila) e novos itens podem ser inseridos na outra extremidade (final da fila) [1].

Como os elementos são inseridos por uma extremidade e extraídos pela outra, este tipo de fila é chamado de lista FIFO (First In First Out), ou primeiro que entra é o primeiro que sai.

Uma pilha é uma lista LIFO (Last In First Out), ou último que entra é o primeiro que sai.

Na figura, A foi o primeiro elemento inserido na fila, será portanto o primeiro a sair. Novos elementos são inseridos no final da fila, ou seja, depois do elemento C. Se A for removido da fila, B passará a ser o primeiro da fila, ou o próximo a sair.

Operações primitivas com filas

As operações primitivas para lidar com filas são para inserir itens, remover itens e verificar se a fila está vazia[1].

Considere uma fila q e um item x, a função

insere(q, x)

insere o item x na fila q;

x = remove(q)

remove o item do início da fila;

vazia(q)

verifica se a fila está vazia.

A operação para remover itens da fila somente pode ser executada se a fila não estiver vazia, por isto a utilizada da função para verificar se a fila está vazia.

Imlementação de filas em linguagem C

Na linguagem C, uma das maneiras de implememtar uma fila é utilizando um vetor para armazenar a fila e mais duas variáveis para armazenar o início e o final da fila [1] [2].

Declaração da fila

Poderíamos declarar uma fila q de inteiros como uma estrutura, com três campos:

  1. define TAM 100

struct fila {

 int inicio, final;
 int itens[TAM];

} q; </source>

Operação insere

Insere item recebido como argumento no final da fila.

void insere(struct fila *q, int x)
{
   q->itens[q->final] = x;
   q->final = p->final +1;
}


Operação remove

Extrai e retorna item do início da fila.

int remove(struct fila *q)
{
   return q->itens[q->inicio];
   q->inicio = p->inicio +1;
}

Referências

  1. 1,0 1,1 1,2 TENENBAUM, A. A.; LANGSAM, Y.; AUGENSTEIN, M.J. Estruturas de dados usando C, capítulo 2: A Pilha, São Paulo: Makron Books, 1995.
  2. FEOFILOFF, p. Projeto de algoritmos em C: Filas. http://www.ime.usp.br/~pf/algoritmos/aulas/fila.html

--Evandro.cantu (discussão) 12h16min de 30 de setembro de 2014 (BRT)