igor santos grueiro. a diario hacemos colas para comer
TRANSCRIPT
![Page 1: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/1.jpg)
Programación IIColas
Igor Santos Grueiro
![Page 2: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/2.jpg)
A diario hacemos
colas
![Page 3: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/3.jpg)
para comer
![Page 4: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/4.jpg)
para ir al cine
![Page 5: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/5.jpg)
En nuestro ordenador también hay colas
![Page 6: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/6.jpg)
ObjetoObjeto
Una cola es una estructura formada por una secuencia de 0 a N elementos, en la que la extracción de elementos se hace en orden de inserción
Cola
Encolar Desencolar
![Page 7: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/7.jpg)
En un cola se recoge el extremo inicial de la cola
Es un tipo de estructura FIFO (First Input First Output)
Un elemento nuevo se inserta por el extremo final de la cola
![Page 8: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/8.jpg)
Podemos hacer varias operaciones:
![Page 9: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/9.jpg)
Crear una cola
![Page 10: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/10.jpg)
Vaciar una cola
ObjetoObjeto
![Page 11: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/11.jpg)
Comprobar si una cola está Vacía
ObjetoObjeto
NOSí
![Page 12: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/12.jpg)
Obtener una copia del primer elemento
ObjetoObjeto Objeto
![Page 13: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/13.jpg)
Insertar un elemento en la cola
ObjetoObjeto
Objeto
Se conoce como encolar o “put”
![Page 14: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/14.jpg)
Recoger el primer elemento y eliminarlo de la cola
Se conoce como desencolar o “get”
Objeto Objeto
![Page 15: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/15.jpg)
Construyamos una cola
![Page 16: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/16.jpg)
Nos hace falta una estructura que enlace un elemento al siguiente
Object elementoNodo siguiente
Nodo
![Page 17: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/17.jpg)
public class NodoCola{private Object elemento;
private NodoCola siguiente;
public NodoCola(Object elemento, NodoCola siguiente){
this.elemento = elemento;this.siguiente = siguiente;
}
public NodoCola(Object elemento){this.elemento = elemento;this.siguiente = null;
}public Object getElemento(){
return elemento;}public NodoCola getSiguiente(){
return siguiente;}public void insertarSig(Object x) {
NodoCola nuevoNodo = new NodoCola(x, this.siguiente);this.siguiente = nuevoNodo;
}
}
}
![Page 18: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/18.jpg)
Ahora la clase Cola
![Page 19: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/19.jpg)
public class Cola{private NodoCola primero;
private NodoCola ultimo;
private int cont;
public Cola(){this.primero = null;this.ultimo = null;this.cont = 0;
}// …
}
}
![Page 20: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/20.jpg)
// … public vaciar(){
this.primero = null;this.ultimo = null;this.cont = 0;
}// …
}
Para vaciar se ponen a null el primero y el último
![Page 21: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/21.jpg)
//…public boolean estaVacia(){
return (this.primero == null); }//…
Para comprobar si está vacía miramos si el primero es
null
![Page 22: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/22.jpg)
//…public void put(Object x){
if (primero == null){this.primero = new NodoCola(x);this.ultimo = primero;
}else{this.ultimo.insertarSiguiente(x);this.ultimo = this.ultimo.getSiguiente();
} this.cont++;}//…
Para insertar un elemento se añade un elemento como siguiente del
último nodo de la cola
![Page 23: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/23.jpg)
PrimeroCim
aCim
aÚltimo
![Page 24: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/24.jpg)
//…public Object frente(){
if (this.primero !=null)return this.primero.getElemento();
elsereturn null;
}//…
Para devolver el elemento al frente se devuelvo el
primero
public Object cima(){ return v[cont-1]; }
![Page 25: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/25.jpg)
//…public void borrar(){
if (this.primero !=null){this.primero = this.primero.getSiguiente();this.cont--;
}}//…
Para borrar el elemento al frente se pone el primero al valor siguiente del primero
previo
public Object cima(){ return v[cont-1]; }
![Page 26: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/26.jpg)
PrimeroCim
aCim
aÚltimo
![Page 27: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/27.jpg)
//…public Object get(){
if (this.primero == null)return null;
else {this.cont--;NodoCola nodoTmp = this.primero;this.primero = this.primero.getSiguiente();return nodoTmp.getElemento();
}}//…
Para desencolar el elemento al frente se recupera y se borra el
elemento primero
public Object cima(){ return v[cont-1]; }
![Page 28: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/28.jpg)
PrimeroCim
aCim
aÚltimo
Devolvemos el objetodentro del nodo eliminado
![Page 29: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/29.jpg)
//…public int tamanyo(){
return this.cont;}//…
También, podemos recuperar el número de elementos
insertados en la cola
public Object cima(){ return v[cont-1]; }
![Page 30: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/30.jpg)
Ya comprendemos las colas
![Page 31: Igor Santos Grueiro. A diario hacemos colas para comer](https://reader035.vdocumento.com/reader035/viewer/2022062512/553691435503460d678b4835/html5/thumbnails/31.jpg)
Ejercicio palíndromos
Diseñar un programa que determine si una frase introducida por teclado es o no palíndroma.
Una frase es palíndroma si la secuencia de caracteres de izquierda a derecha en la frase es la misma que de derecha a izquierda. En esta comprobación no se tendrá en cuenta los caracteres blancos que separan las palabras de la frase, ni se diferenciaran las mayúsculas de las minúsculas.
El programa deberá hacer uso en este programa de una Pila y de una Cola para verificar que la frase es o no palíndroma.