Programación II Colas Igor Santos Grueiro.

Slides:



Advertisements
Presentaciones similares
5. Estructuras no lineales estáticas y dinámicas
Advertisements

Definición Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que.
Programación II Recursividad
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Listas enlazadas c++ Prof. Franklin Cedeño.
Tema 3: La estructura de datos Lista
Programación II Listas
Estructuras de datos y algoritmos
Utilización de un TAD Arbol.
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Programación y Estructuras de Datos
Igor Santos Grueiro. Muchos objetos tienen CLAVE.
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
Árboles binarios. Algoritmos básicos
Tratamiento de listas en Java
2.3 Cola de números enteros.
2.2 Pila de números enteros
Tema 5 Grafos. Recorridos..
Tema 4 Árboles. Árbol sobre matriz.
PROGRAMACION DE Pilas o Stacks y Colas
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Marzo 2007 Lenguajes Visuales Clase III.
Cont. Arbol Binario de Búsqueda
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Colas y Listas Enlazadas
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
Tema Nº4.
Estructuras dinámicas de datos, TAD Lista, parte 2
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Pila1UVM Colas. Pila2UVM Pila3UVM 3.1 Objetivos El estudiante manejará el tad Cola, sobre memoria estática.
Pilas Una pila es una estructura lineal de elementos en donde se pueden agregar o eliminar datos únicamente por uno de los dos extremos. En consecuencia.
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Colecciones.
Igor Santos Grueiro. Ahora tenemos datos y datos …
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
ARBOLES ESTRUCTURAS DE DATOS.
Árboles binarios de búsqueda
Arboles M.C. José Andrés Vázquez FCC/BUAP
ARBOLES ESTRUCTURAS DE DATOS.
AED3: Algoritmos y Estructuras de Datos 3.  Uno de los conceptos mas utiles en computacion es la pila o stack  Es un conjunto de elementos, en la que:
Pilas y Colas Estructuras de Datos.
TDA PILA ESTRUCTURAS DE DATOS.
Árboles Binarios Estructuras de Datos.
LISTA DOBLEMENTE ENLAZADA
Dinamismo y Contenedores Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires (C++ Avanzado) Depto. de Computación Algoritmos y Estructuras.
República Bolivariana de Venezuela. Ministerio del PP para la Defensa. Universidad Nacional Experimental de la Fuerza Armada. Cátedra: Instrucción Militar.
Estructuras de Datos y Algoritmos TDA Cola. TDA Una Cola es una arreglo lineal de elementos con las siguientes operaciones: –Crear una cola vacía –determinar.
TIPOS ABSTRACTOS DE DATOS. 2  Un Tipo Abstracto de Dato (TAD) es un modelo constituido por un conjunto de objetos y una colección de operaciones realizables.
Son estructuras de datos que almacenan y recuperan sus elementos atendiendo a un estricto orden (LIFO Last – in, first –out Ultimo en entrar – primero.
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
Algoritmos y Estructuras de datos Listas Doblemente enlazadas
UNIDAD IV. PILAS, COLAS, RECURSION APLICADAS A LENGUAJE C.
Ayudantia 3: Pilas- Colas
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Lic. En C.C. Ann Margareth Meza Rodríguez
Pilas y Colas Cursos Propedéuticos 2006 Programación y Estructuras de Datos Manuel Montes Claudia Feregrino
Listas. Utilización de un TAD Lista. Interfaz del TAD LISTA public interface Lista { void crearNodo (); /*Crea un nuevo nodo en el TadLista*/ int devolverClave.
Estructura: COLA Profesor: Ing. Erick López Ch. M.R.I.
PROGRAMACION DE Pilas o Stacks
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
ESTRUCTURAS LINEALES “LA PILA”
OPERACIONES CON PILAS DECLARACIÓN O INICIALIZACIÓN DE LA PILA. Stack NombrePila=newStack (max);
PROGRAMACION DE Pilas o Stacks y Colas
Listas Dinámicas.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada TIPOS ABSTRACTOS DE DATOS TAD Tema: TIPOS ABSTRACTOS DE DATOS TAD Subtema: COLAS.
Árboles binarios. Algoritmos básicos
Transcripción de la presentación:

Programación II Colas Igor Santos Grueiro

A diario hacemos colas

para comer

para ir al cine

En nuestro ordenador también hay colas

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

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)

Podemos hacer varias operaciones:

Crear una cola

Vaciar una cola Objeto Objeto

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

Obtener una copia del primer elemento Objeto Objeto Objeto

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

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

Construyamos una cola

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

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;

Ahora la clase Cola

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; } // …

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; }

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

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++;

Primero Cima Último Cima

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; }

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--; }

Primero Cima Último Cima

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(); }

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

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; }

Ya comprendemos las colas

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.