Prof. Adriano Teixeira de Souza
   Utilizaremos também uma lista simplesmente    encadeada para tal.   Como teremos que inserir e retirar elementos nas ...
   O nó da lista para                A estrutura da fila    armazenar valores reais            agrupa os ponteiros    po...
   A função cria aloca a estrutura da fila e inicializa    a lista como sendo vazia.Fila cria(){   Fila f = new Fila();  ...
   Cada novo elemento é inserido no fim da lista e    sempre retiramos o elemento do início da lista.    Portanto, precis...
/* função auxiliar: insere no fim */No ins_fim (No fim, float v) {    No p = new No();    p.info = v;    p.proximo = null;...
   As funções que manipulam a fila fazem uso dessas    funções de lista.   Note que a função de inserção deve atualizar ...
   A função de retirar deve atualizar ambos os ponteiros    (ini e fim) se a fila tornar-se vazia após a remoção do    el...
   A fila estará vazia se a lista estiver vazia:     boolean vazia (Fila f)     {        return (f.inicio == null);     }...
   Para testar o código, pode ser útil implementarmos um    função que imprima os valores armazenados na fila. A    ordem...
public static void main(String[] args) {  ManipuladorFila manipulador = new ManipuladorFila();  Fila f = manipulador.cria(...
Upcoming SlideShare
Loading in...5
×

Estrutura de dados em Java - Filas com lista encadeada

12,985

Published on

Published in: Technology
1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total Views
12,985
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
343
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

Transcript of "Estrutura de dados em Java - Filas com lista encadeada "

  1. 1. Prof. Adriano Teixeira de Souza
  2. 2.  Utilizaremos também uma lista simplesmente encadeada para tal. Como teremos que inserir e retirar elementos nas extremidades opostas da lista, que representarão o início e o fim da fila, teremos que usar dois ponteiros, ini e fim, que aprontam respectivamente para o primeiro e para o último elemento da fila. ini fiminfo info info info 1 2 3 4 Prof. Adriano Teixeira de Souza
  3. 3.  O nó da lista para  A estrutura da fila armazenar valores reais agrupa os ponteiros pode ser dado por: para o início e o fim da lista:public class No { float info; public class Fila { No proximo; No inicio; No fim;} } Prof. Adriano Teixeira de Souza
  4. 4.  A função cria aloca a estrutura da fila e inicializa a lista como sendo vazia.Fila cria(){ Fila f = new Fila(); f.inicio = null; f.fim = null; return f;} Prof. Adriano Teixeira de Souza
  5. 5.  Cada novo elemento é inserido no fim da lista e sempre retiramos o elemento do início da lista. Portanto, precisamos das funções: Prof. Adriano Teixeira de Souza
  6. 6. /* função auxiliar: insere no fim */No ins_fim (No fim, float v) { No p = new No(); p.info = v; p.proximo = null; if (fim != null) // verifica se a lista não estava vazia fim.proximo = p; return p;}/* função auxiliar: retira do início */No ret_ini (No inicio) { No p = inicio.proximo; return p;}
  7. 7.  As funções que manipulam a fila fazem uso dessas funções de lista. Note que a função de inserção deve atualizar ambos os ponteiros, ini e fim, quanto da inserção do primeiro elemento:void insere (Fila f, float v){ f.fim = ins_fim(f.fim,v); if (f.inicio == null) // fila antes vazia? f.inicio = f.fim;} Prof. Adriano Teixeira de Souza
  8. 8.  A função de retirar deve atualizar ambos os ponteiros (ini e fim) se a fila tornar-se vazia após a remoção do elemento. float retira (Fila f) { float v; if (vazia(f)) { System.out.println("Fila vazia."); System.exit(1); // aborta programa } v = f.inicio.info; f.inicio = ret_ini(f.inicio); if (f.inicio == null) // fila ficou vazia? f.fim = null; return v; } Prof. Adriano Teixeira de Souza
  9. 9.  A fila estará vazia se a lista estiver vazia: boolean vazia (Fila f) { return (f.inicio == null); } Prof. Adriano Teixeira de Souza
  10. 10.  Para testar o código, pode ser útil implementarmos um função que imprima os valores armazenados na fila. A ordem de impressão adotada é do início para o fim. /* versão com lista*/ void imprime (Fila f){ No q; for (q=f.inicio; q!=null; q=q.proximo){ System.out.println(q.info) ; } } Prof. Adriano Teixeira de Souza
  11. 11. public static void main(String[] args) { ManipuladorFila manipulador = new ManipuladorFila(); Fila f = manipulador.cria(); manipulador.insere(f,20.0f); manipulador.insere(f,20.8f); manipulador.insere(f,20.2f); manipulador.insere(f,20.3f); manipulador.imprime(f); System.out.println("Primeiro elemento: "+ manipulador.retira(f)); System.out.println("Segundo elemento: "+ manipulador.retira(f)); System.out.println("Configuracao da fila:"); manipulador.imprime (f); f = null;}
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×