Uma colecao LIFO (ultimo a sair e o primeiro a entrar)
// ----------------------------------------------------------- // Estruturas de Dados 2021/2022 (CC1007) - DCC/FCUP // http://www.dcc.fc.up.pt/~pribeiro/aulas/edados2122/ // ----------------------------------------------------------- // Interface para o TAD Fila // Ultima alteracao: 06/04/2018 // ----------------------------------------------------------- public interface MyQueue<T> { // Metodos que modificam a fila public void enqueue(T v); // Coloca um valor no final da fila public T dequeue(); // Retira e retorna o valor no inicio da fila // Metodos que acedem a informacao (sem modificar) public T first(); // Retorna valor no inicio da fila public int size(); // Retorna quantidade de elementos na fila public boolean isEmpty(); // Indica se a fila esta vazia }
// ----------------------------------------------------------- // Estruturas de Dados 2021/2022 (CC1007) - DCC/FCUP // http://www.dcc.fc.up.pt/~pribeiro/aulas/edados2122/ // ----------------------------------------------------------- // Exemplo de utilizacao do TAD Fila // Ultima alteracao: 06/04/2018 // ----------------------------------------------------------- public class TestMyQueue { public static void main(String[] args) { // Criacao da fila MyQueue<Integer> q = new LinkedListQueue<Integer>(); // Exemplo de insercao de elementos na fila for (int i=1; i<=8; i++) q.enqueue(i); // insere i no final da fila System.out.println(q); // Exemplo de remocao de elementos da fila for (int i=0; i<4; i++) { int aux = q.dequeue(); // retira o elemento no inicio da fila System.out.println("q.dequeue() = " + aux); } System.out.println(q); // Exemplo de utilizacao dos outros metodos System.out.println("q.size() = " + q.size()); System.out.println("q.isEmpty() = " + q.isEmpty()); System.out.println("q.first() = " + q.first()); } }
// ----------------------------------------------------------- // Estruturas de Dados 2021/2022 (CC1007) - DCC/FCUP // http://www.dcc.fc.up.pt/~pribeiro/aulas/edados2122/ // ----------------------------------------------------------- // Implementacao do TAD Fila usando lista duplamente ligada // Ultima alteracao: 06/04/2018 // ----------------------------------------------------------- public class LinkedListQueue<T> implements MyQueue<T> { private DoublyLinkedList<T> list; LinkedListQueue() { list = new DoublyLinkedList<T>();} public void enqueue(T v) { list.addLast(v); } public T dequeue() { T ans = list.getFirst(); list.removeFirst(); return ans; } public T first() { return list.getFirst();} public int size() {return list.size();} public boolean isEmpty() {return list.isEmpty();} public String toString() {return list.toString();} }