La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación II Colas Igor Santos Grueiro.

Presentaciones similares


Presentación del tema: "Programación II Colas Igor Santos Grueiro."— Transcripción de la presentación:

1 Programación II Colas Igor Santos Grueiro

2 A diario hacemos colas

3 para comer

4 para ir al cine

5 En nuestro ordenador también hay colas

6 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 Encolar Desencolar Cola Objeto Objeto

7 En un cola se recoge el extremo inicial de la cola
Un elemento nuevo se inserta por el extremo final de la cola Es un tipo de estructura FIFO (First Input First Output)

8 Podemos hacer varias operaciones:

9 Crear una cola

10 Vaciar una cola Objeto Objeto

11 Comprobar si una cola está Vacía
NO Objeto Objeto

12 Obtener una copia del primer elemento
Objeto Objeto Objeto

13 Insertar un elemento en la cola Se conoce como encolar o “put”
Objeto Objeto Objeto

14 Recoger el primer elemento y eliminarlo de la cola
Se conoce como desencolar o “get” Objeto Objeto

15 Construyamos una cola

16 Nos hace falta una estructura que enlace un elemento al siguiente
Nodo Nodo siguiente Object elemento

17 public class NodoCola{ private Object elemento;
} 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.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;

18 Ahora la clase Cola

19 private NodoCola primero; private NodoCola ultimo; private int cont;
} public class Cola{ private NodoCola primero; private NodoCola ultimo; private int cont; public Cola(){ this.primero = null; this.ultimo = null; this.cont = 0; } // …

20 Para vaciar se ponen a null el primero y el último
} Para vaciar se ponen a null el primero y el último // … public vaciar(){ this.primero = null; this.ultimo = null; this.cont = 0; }

21 Para comprobar si está vacía miramos si el primero es null
//… public boolean estaVacia(){ return (this.primero == null); }

22 se añade un elemento como siguiente del último nodo de la cola
Para insertar un elemento se añade un elemento como siguiente del último nodo de la cola //… 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++;

23 Primero Cima Último Cima

24 Para devolver el elemento al frente se devuelvo el primero
public Object cima(){ return v[cont-1]; } Para devolver el elemento al frente se devuelvo el primero //… public Object frente(){ if (this.primero !=null) return this.primero.getElemento(); else return null; }

25 public Object cima(){ return v[cont-1]; }
Para borrar el elemento al frente se pone el primero al valor siguiente del primero previo //… public void borrar(){ if (this.primero !=null){ this.primero = this.primero.getSiguiente(); this.cont--; }

26 Primero Cima Último Cima

27 public Object cima(){ return v[cont-1]; }
Para desencolar el elemento al frente se recupera y se borra el elemento primero //… public Object get(){ if (this.primero == null) return null; else { this.cont--; NodoCola nodoTmp = this.primero; this.primero = this.primero.getSiguiente(); return nodoTmp.getElemento(); }

28 Primero Cima Último Cima Devolvemos el objeto
dentro del nodo eliminado

29 También, podemos recuperar
public Object cima(){ return v[cont-1]; } También, podemos recuperar el número de elementos insertados en la cola //… public int tamanyo(){ return this.cont; }

30 Ya comprendemos las colas

31 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.


Descargar ppt "Programación II Colas Igor Santos Grueiro."

Presentaciones similares


Anuncios Google