Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Estruturas de Dados Fila Pilha Compacta v2

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 3

Estruturas de Dados: Fila, Pilha e Suas Variações

Fila (Array): Uma fila (queue) é uma estrutura de dados que segue o princípio FIFO (First In, First Out). Em um array, os elementos são adicionados no final da fila e removidos do início.
Exemplo em Java:

import java.util.LinkedList;
import java.util.Queue;
public class FilaArray {
public static void main(String[] args) {
Queue<Integer> fila = new LinkedList<>();
fila.add(1); // Adiciona 1 à fila
fila.add(2); // Adiciona 2 à fila
System.out.println(fila.remove()); // Remove e imprime o primeiro elemento: 1
}
}

Pilha (Array): Uma pilha (stack) segue o princípio LIFO (Last In, First Out). Em um array, os elementos são adicionados e removidos do final da pilha.
Exemplo em Java:

import java.util.Stack;
public class PilhaArray {
public static void main(String[] args) {
Stack<Integer> pilha = new Stack<>();
pilha.push(1); // Adiciona 1 à pilha
pilha.push(2); // Adiciona 2 à pilha
System.out.println(pilha.pop()); // Remove e imprime o último elemento: 2
}
}

Fila Circular (Array): Uma fila circular conecta o último elemento ao primeiro formando um círculo. Permite uma utilização eficiente do espaço.
Exemplo em Java:

public class FilaCircularArray {


private int[] fila;
private int tamanho, inicio, fim;

public FilaCircularArray(int tamanho) {


this.tamanho = tamanho;
this.fila = new int[tamanho];
this.inicio = -1;
this.fim = -1;
}

public void enfileirar(int item) {


if ((fim + 1) % tamanho == inicio) {
System.out.println("Fila Cheia");
} else if (inicio == -1) {
inicio = 0;
fim = 0;
fila[fim] = item;
} else {
fim = (fim + 1) % tamanho;
fila[fim] = item;
}
}

public int desenfileirar() {


if (inicio == -1) {
System.out.println("Fila Vazia");
return -1;
}
int item = fila[inicio];
if (inicio == fim) {
inicio = -1;
fim = -1;
} else {
inicio = (inicio + 1) % tamanho;
}
return item;
}

public static void main(String[] args) {


FilaCircularArray fila = new FilaCircularArray(5);
fila.enfileirar(1); // Adiciona 1 à fila
fila.enfileirar(2); // Adiciona 2 à fila
System.out.println(fila.desenfileirar()); // Remove e imprime o primeiro elemento: 1
}
}

Pilha Encadeada (Linked List): Uma pilha encadeada utiliza nós conectados para armazenar os elementos. É eficiente para inserções e remoções frequentes.
Exemplo em Java:

public class PilhaEncadeada {


private No topo;

private class No {
int valor;
No proximo;
No(int valor) { this.valor = valor; }
}

public void empilhar(int valor) {


No novoNo = new No(valor);
novoNo.proximo = topo;
topo = novoNo;
}

public int desempilhar() {


if (topo == null) {
return -1;
}
int valor = topo.valor;
topo = topo.proximo;
return valor;
}

public static void main(String[] args) {


PilhaEncadeada pilha = new PilhaEncadeada();
pilha.empilhar(1); // Adiciona 1 à pilha
pilha.empilhar(2); // Adiciona 2 à pilha
System.out.println(pilha.desempilhar()); // Remove e imprime o último elemento: 2
}
}

Fila Encadeada (Linked List): Uma fila encadeada utiliza nós conectados, permitindo inserções no final e remoções no início de forma eficiente.
Exemplo em Java:

public class FilaEncadeada {


private No inicio, fim;

private class No {
int valor;
No proximo;
No(int valor) { this.valor = valor; }
}

public void enfileirar(int valor) {


No novoNo = new No(valor);
if (fim != null) {
fim.proximo = novoNo;
}
fim = novoNo;
if (inicio == null) {
inicio = novoNo;
}
}

public int desenfileirar() {


if (inicio == null) {
return -1;
}
int valor = inicio.valor;
inicio = inicio.proximo;
if (inicio == null) {
fim = null;
}
return valor;
}

public static void main(String[] args) {


FilaEncadeada fila = new FilaEncadeada();
fila.enfileirar(1); // Adiciona 1 à fila
fila.enfileirar(2); // Adiciona 2 à fila
System.out.println(fila.desenfileirar()); // Remove e imprime o primeiro elemento: 1
}
}

Você também pode gostar