Saida 1---------------------------------------------------- package questao1; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; public class NodeQueue { /** * A lista onde serão armazenados os elementos. */ private List elements; /** * Construtor vazio da classe. */ public NodeQueue() { elements = new ArrayList(); } /** * Diz se a fila está vazia. * * @return Um boolean que, caso tenho o valor true, indica * que a fila está vazia. */ public synchronized boolean isEmpty() { return this.elements.isEmpty(); } /** * Remove o elemento que se encontra no topo da pilha e o retorna. * * @return O string que se encontra no topo ds pilha. */ public synchronized Node first() { Node retorno = null; if (!elements.isEmpty()) { retorno = (Node)elements.get(0); elements.remove(0); } return retorno; } /** * Adiciona um elemento a fila. Ordenando-o, de acordo com o valor de sua * heurística. * * @param node Um objeto qualquer do tipo Node. * @throws java.lang.IllegalArgumentException * Levantada quando o argumento * node for null. */ public synchronized void push( Node node) throws IllegalArgumentException{ if (node == null) { throw new IllegalArgumentException(); } this.elements.add(node); Collections.sort(this.elements, new Utils()); } /** * Retorna um iterator para que se possa navegar pelos elementos desta fila. * * @return Iterator para que se possa navegar pelos elementos desta fila. */ public synchronized Iterator iterator() { return this.elements.iterator(); } /** * Diz se o nó passado como parâmetro se encontra nesta fila. * * @param n * @return */ public synchronized boolean contains( Node n) { return this.elements.contains(n); } public synchronized String toString() { StringBuffer sbuffer = new StringBuffer(); final int size = this.elements.size(); if (size > 0) { for( int i = 0; i < size - 1; i++) { sbuffer.append(this.elements.get(i)); sbuffer.append(", "); } sbuffer.append(this.elements.get(size - 1)); } return sbuffer.toString(); } public static synchronized void main( String[] args) { NodeQueue queue = new NodeQueue(); // cria os nós Node n1 = new Node(1, 1, 3); Node n2 = new Node(1, 7, 7); Node n3 = new Node(1, 9, 1); Node n4 = new Node(1, 4, 8); Node n5 = new Node(1, 2, 2); Node n6 = new Node(1, 5, 5); Node n7 = new Node(1, 7, 9); queue.push(n1); queue.push(n2); queue.push(n3); queue.push(n4); queue.push(n5); queue.push(n6); queue.push(n7); System.out.println("queue= " + queue); System.out.println("Imprimindo primeiro elemento " + queue.first()); } }