class ColaEnlazada implements Cola {

    protected Nodo primero = null;
    protected Nodo ultimo = null;

    public boolean estaVacia() {
        return (primero == null);
    }

    public int tamaņo() {

        Nodo actual= primero;
        int i;

        for (i = 0; actual != null; i++) {
            actual = actual.getSiguiente();
        }

        return i;
    }

    public Object primero() {

        if (primero != null) {
            return primero.getDato();
        } else {
            return null;
        }
    }

    public void insertar(Object dato, Comparable clave) {

        if (dato != null) {
            Nodo n = new Nodo();
            n.setDato(dato);
            n.setClave(clave);
            if (ultimo != null) {
                ultimo.setSiguiente(n);
                ultimo = n;
            } else {
                primero = n;
                ultimo = n;
            }
        }
    }

    public Object retirar() {
        Object dato = null;

        if (primero != null) {
            dato = primero.getDato();
            primero = primero.getSiguiente();
            if (primero == null) {
                ultimo = null;
            }
        }
        return dato;
    }

    public void insertarNoDuplicado(String dato, Comparable clave) {

        // A programar en el apartado 2
    }

    public static void main(String[] args) {

        ColaEnlazada q= new ColaEnlazada();

        q.insertar("a", "--a");
        q.insertar("b", "--b");
        q.insertar("c", "--c");
        q.insertar("d", "--d");
        q.insertarNoDuplicado("z", "--z");
        q.insertarNoDuplicado("otro-d", "--d");
        q.insertarNoDuplicado("otro-a", "--a");
        q.insertarNoDuplicado("e", "--e");

        Object o;
        while ((o=q.retirar()) != null) {
            System.out.println(o);
        }
    }

}

