UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Tamanho: px
Começar a partir da página:

Download "UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas"

Transcrição

1 UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA 6 Filas Estrutura de Dados

2 A Estrutura de Dados Fila Fila é uma estrutura de dados usada em programação, que tem regras para o acesso aos dados: inserções são feitas em uma extremidade, chamada final da fila, remoções são feitas na outra extremidade, chamada início da fila. Dizemos que uma Fila é uma estrutura FIFO (First In, First Out), ou seja, o primeiro elemento inserido é o primeiro elemento a ser consultado ou removido. Vamos analisar o comportamento de uma fila olhando o exemplo a seguir.

3 Simulando uma Fila ( tamanho = 4) ) Fila Vazia inicio = fim = total =

4 Simulando uma Fila ( tamanho = 4) ) Fila Vazia inicio = fim = total = ) Enfileirar( A ) A inicio = fim = total =

5 Simulando uma Fila ( tamanho = 4 ) ) Enfileirar( B ) A B inicio = fim = total =

6 Simulando uma Fila ( tamanho = 4 ) ) Enfileirar( B ) A B inicio = fim = total = 4) Enfileirar( C ) A B C inicio = fim = total =

7 Simulando uma Fila ( tamanho = 4 ) 5) Enfileirar( D ) A B C D inicio = fim = total = 4 6) Desenfileirar() B C D inicio = fim = total =

8 Simulando uma Fila ( tamanho = 4 ) 7) Desenfileirar() C D inicio = fim = total = 8) Enfileirar( E ) E C D inicio = fim = total =

9 Simulando uma Fila ( tamanho = 4 ) 9) Enfileirar( F ) E F C D inicio = fim = total = 4 ) Desenfileirar() E F D inicio = fim = total = ) MostrarFila() D E F

10 Operações de Fila enfileirar insere um elemento na fila desenfileirar remove um elemento da fila tamanho informa número de elementos fila vazia verifica se a fila está vazia fila cheia - verifica se a fila está cheia elemento do início mostra o elemento que está no início da fila mostrar fila exibe todos os elementos que a fila possui.

11 Descrição da classe Fila Basicamente, esses métodos são: construtor fila() - cria a fila e inicia o início e o fim enfileirar() - armazena valores no final da fila desenfileirar() retira e devolve o valor do início da fila tamanho() informa número de elementos filavazia() - verifica se a fila está ou não vazia filacheia() verifica se a fila está ou não cheia elementoinicio() - consulta e devolve o elemento do início sem retirá-lo da fila No caso de fila vazia, ao se tentar buscar o elemento do início, deve-se disparar uma exceção, que cuidará dessa situação de erro.

12 Classe Fila public class Fila { int tamanho, inicio, fim, total; Object vetor[]; public Fila (int tam){ inicio = ; fim = ; total = ; tamanho = tam; vetor= new Object[tamanho];

13 public boolean filavazia( ) { if (total == ) { return true; else { return false; public boolean filacheia( ){ if (total >= tamanho){ return true; else { return false;

14 public void enfileirar(object elemento){ if (!filacheia( )){ vetor[fim] = elemento; fim = fim + ; total = total + ; if (fim >= tamanho) { fim = ; // volta ao início da fila else { System.out.println("Fila Cheia");

15 public Object desenfileirar( ) { Object desenfileirado = null; if (filavazia()) { System.out.println("Fila Vazia"); else { desenfileirado = vetor[inicio]; inicio = inicio + ; total = total -; if (inicio >= tamanho) { inicio = ; // retorna para o começo da fila return desenfileirado;

16 public Object elementoinicio( ){ if (!filavazia()){ return vetor[inicio]; else { System.out.println ( Fila Vazia );

17 public void mostrarfila( ) { int i = inicio; // utilizado com índice int cont = ; // contador do número de elementos String result=""; while ( cont < total ) { result+= "Elemento " + vetor[i] + " posição " + i+"\n"; i++; if ( i == tamanho ) { i = ; cont++; System.out.println(result);

18 Classe TesteFila, que utiliza os métodos public class TesteFila{ public static void main (String arg []) { Fila f = new Fila(); f.enfileirar("a"); f.enfileirar("b"); f.enfileirar("c"); String msg = (String)f.desenfileirar(); System.out.printf("Elemento removido: %s", msg); // Imprime A f.mostrarfila(); // Mostra B e C System.exit();

19 Classe Teste, que utiliza os métodos import java.util.scanner; public class TesteFila { public static void main(string[] args) { Fila objfila = new Fila(5); Scanner ler = new Scanner (System.in); int entrada; int i; for (i = ; i < objfila.vetor.length; i++){ System.out.print("\nDigite um valor inteiro: "); entrada = ler.nextint(); objfila.enfileirar(entrada); objfila.mostrarfila( ); System.exit();

20 Exercício Fazer um exercício para ler um número em binário, e convertê-lo para decimal. Usar uma Fila na solução do problema

21 A função substring() A função substring() é utilizada para retornar uma cópia de caracteres de uma string a partir de dois índices inteiros especificados. Sintaxe: <string>.substring(<índice inicial>,[<índice final>]) O índice inicial indica o primeiro caracter que será copiado. O índice final indica onde termina a cópia dos caracteres, porém deve ser especificado um índice além do que queremos copiar. Exemplo: String a,b; a = Faculdade UNIP ; b = a.substring(,9); O valor de b será: Faculdade

22 Exercício Fazer um exercício para ler um número em hexadecimal, e convertê-lo para decimal. Usar uma Fila na solução do problema