PRÁCTICA 7
En esta práctica tenemos que crear una cola (como la de la práctica anterior) pero que sea dinámica. Por eso de que no haya máximo a la hora de encolar, y también porque si solo utilizamos 3 objetos es tontería tener una cola de 10.000 objetos.
Se trata de hacerla, pero sin utlizar cosas avanzadas, es decir, imaginar que somos los primeros en hacer una cola dinámica. En un principio pensamos en usar la clase Vector, pero nos dijeron que no teníamos que usar nada que ya estuviera hecho, así que al final recurriendo a las clases de teoría nos acercamos a la idea de crear Nodos.
Los nodos son clases muy sencillas que básicamente tienen 2 atributos: Pieza pieza y Nodo sig_pieza. Pieza tiene la propia pieza, sig_pieza tiene una referencia a la siguiente pieza (si hay, si no hay que apunte a null). Además tiene el constructor normal y los métodos pon() y dame() de cada uno de ellos.
Además tenemos otra clase Lista que tiene también dos atributos: Primero ( que nos va a apuntar al primer elemento que metamos, ya que recordemos que queremos crear una ) y Recorrido ( que va a ir apuntando al siguiente elemento que vayamos insertando); los dos van a ser de tipo Nodo. En esta clase están los métodos:
- El constructor que inicializa los dos atributos a null
- vacía() que devuelve un boolean que dice si primero == null
- llena() no estará debido a que al ser una cola dinámica nunca nos vamos a tener que preocupar de si está llena o no.
- encolar ( Pieza p):
public void encolar(Pieza p) {
Nodo nodo = new Nodo(p,null); // crea un nuevo nodo poniendo como Pieza la q le metes y que el atributo sig_pieza apunte a null
if (primero == null) {
primero = nodo; // si todavía no hay ninguna pieza que el atributo primero apunte a este nodo ( a partir de aquí este siempre será el primero, a no ser que lo saquemos que entonces será el siguiente…)
}
else {
ultimo.ponSig_Pieza(nodo); // si no, llamo a ponSig_Pieza de la clase nodo y le digo que sig_pieza sea ahora el nodo que acabo de crear
}
recorrido = nodo; // y digo que el atributo recorrido me apunte a nodo ( que es el ultimo nodo que he metido)
}
- desencolar(): que si está vacía diremos que no se puede, y si no, sacaremos el primer elemento que haya y por lo tanto, tenemos que decir que el atributo primero apunte al siguiente que había de primero…este método no nos ha llegado a salir del todo, creemos que sabemos lo que tenemos que hacer, pero el código en sí nos resulta un poco lioso…si alguien puede ayudar…nosotros lo seguiremos intentando, o si no esperaremos a que cuelgen las soluciones y a ver si así ya lo vemos claro.
No hemos puesto ningún método más aunque pensamos que lo mismo para hacer el de desencolar necesitamos otro método que nos haga lo de que el segundo elemento que teníamos ( es decir, el nodo al que apunta el atributo sig_pieza del primer nodo) sea ahora el primero…
Bueno y esto es todo, si conseguimos hacer el desencolar lo pondremos aqui por si ayuda a alguien.
Un saludo.


