Estructuras de datos Fundamentos de análisis y diseño de algoritmos.

Slides:



Advertisements
Presentaciones similares
PILA.
Advertisements

ESTRUCTURA DE DATOS Unidad 03 PILAS.
Pilas y Colas Fundamentos Estructuras de Datos (Programación 2)
TDA LISTA ESTRUCTURAS DE DATOS.
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.
Programación II Listas
Estructuras de datos y algoritmos
ESTRUCTURAS LINEALES UNIDAD 3.
Estructura de Datos En C++
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
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.
Estructuras de Datos Especificación formal de Listas.
Programación II Colas Igor Santos Grueiro.
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.
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
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.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Estructura de Datos En C++
Arboles M.C. José Andrés Vázquez FCC/BUAP
1 Estructuras de Datos Elementales:stacks (pilas), queues (colas), linked lists (listas enlazadas), y rooted trees (árboles con raíz) Agustín J. González.
Pila1UVM Pilas. Pila2UVM Pila3UVM 2.1 Objetivos El estudiante manejará el tad Pila contigua.
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
clase 23: Stacks y Queues Problema.
Computación I Primer Semestre 2006 Capítulo IV Ciclos y Colecciones (con un sabor a algoritmos)
República Bolivariana de Venezuela. Ministerio del PP para la Defensa. Universidad Nacional Experimental de la Fuerza Armada. Cátedra: Instrucción Militar.
Universitarios: Ricardo Gonzales Jimenez Wilfredo Coca Reinaldo Yohan Docente: Lic. Israel Torrez Valverde Tema: Listas doblemente Enlazadas.
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.
Grafos..
Unidad 4: LISTAS.
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.
Punteros, referencias Listas enlazadas Arboles
Algoritmos y Estructuras de datos Listas Doblemente enlazadas
Ayudantia 3: Pilas- Colas
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Lic. En C.C. Ann Margareth Meza Rodríguez
Estructura de Datos..
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 de Datos PILAS. es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
M.C. Meliza Contreras González
M.C. Meliza Contreras González
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);
Pilas Grupo 4. 1 Stack o Pila Definición: Una pila es una estructura de datos, a la cual se le puede ingresar o sacar elementos por un sólo lado. También.
PROGRAMACION DE Pilas o Stacks y Colas
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
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.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Estructuras de datos y algoritmos
Listas Dinámicas.
Transcripción de la presentación:

Estructuras de datos Fundamentos de análisis y diseño de algoritmos

Listas enlazadas Definición Una lista enlazada es una colección de elementos llamados nodos. Cada nodo contiene un dato y una referencia al siguiente nodo.

Listas enlazadas 23 Cada nodo se representa por medio de dos campos: Campo dato: contiene el valor del nodo Campo siguiente: indica cuál es el nodo con el que se enlaza dato siguiente 99 dato siguiente 4

Listas enlazadas Lista enlazada con 3 nodos. Los nodos tienen datos de tipo entero. Nodo 1 Dato: 23 Siguiente: Nodo 2 Nodo 2 Dato: 6 Siguiente: Nodo 3 Nodo 3 Dato: 99 Siguiente: null (indica que es el fin de la lista)

Listas enlazadas Definición: Nodo cabecera E A RE Al primer nodo se le llama cabecera y sirve como punto de referencia en la lista. No contiene ningún dato

Listas enlazadas Las operaciones sobre una lista enlazada son: Crear lista Insertar nodo al inicio Eliminar nodo al inicio Imprimir datos Es una lista vacía?

Listas enlazadas Crear lista Al crear una lista, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null.

Listas enlazadas Cada nodo se representa por medio de dos campos: Campo dato: contiene el valor del nodo Campo siguiente: indica cuál es el nodo con el que se enlaza public class Nodo{ Object dato; Nodo siguiente; Nodo(Object o) { dato=o; siguiente=null; }

Listas enlazadas Crear lista Al crear una lista, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null. public class Lista{ Nodo cabecera; Lista(){ cabecera=new Nodo(null); }... }

Listas enlazadas ¿Lista vacía? Cuando la lista está vacía el campo siguiente de la cabecera es null

Listas enlazadas ¿Lista vacía? Cuando la lista está vacía el campo siguiente de la cabecera es null public boolean estaVacia(){ if (cabecera.siguiente==null){ return true; } else{ return false; }

public class Lista{ Nodo cabecera; Lista(){ cabecera=new Nodo(null); } public boolean estaVacia(){ if (cabecera.siguiente==null){ return true; } else{ return false; }

Listas enlazadas Insertar nodo al inicio( La lista está vacía ) W Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado

Listas enlazadas Insertar nodo al inicio (La lista está vacía) Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado void insertar(Object o) { Nodo nuevo=new Nodo(null); if ( estaVacia() ) { nuevo=new Nodo(o); cabecera.siguiente=nuevo; }

Listas enlazadas Insertar nodo al inicio( La lista no está vacía ) W Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando AW

Listas enlazadas Insertar nodo al inicio (La lista no está vacía) Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando if ( estaVacia() ) { nuevo=new Nodo(o); cabecera.siguiente=nuevo; } else{ nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; }

Listas enlazadas Eliminar nodo al inicio AW W Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo

Listas enlazadas Eliminar nodo al inicio Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo public void eliminar() { Nodo borrar=cabecera.siguiente; cabecera.siguiente=borrar.siguiente; borrar.siguiente=null; }

Listas enlazadas Imprimir datos

Listas enlazadas Imprimir datos public void imprimir() { Nodo actual=new Nodo(null); if (estaVacia()) System.out.println(“La lista esta vacia"); else { actual=cabecera.siguiente; System.out.println("\n"); while( actual != null){ System.out.print( actual.dato ); actual=actual.siguiente; }

Listas enlazadas Desarrolle la operación eliminarAlFinal()

Listas enlazadas Desarrolle la operación eliminarAlFinal() Desarrolle la operación insertAt(Object o, int i)

Listas enlazadas Desarrolle la operación eliminarAlFinal() Desarrolle la operación insertAt(Object o, int i) Indique la complejidad de las operaciones: Crear lista Insertar nodo al inicio Eliminar nodo al inicio Imprimir datos ¿Lista vacía? eliminarAlFinal() insertAt(Object o, int i)

Pila

Definición Una pila es una estructura de datos en la que el último elemento que se coloca en la pila, será el primero que se puede sacar En una pila sólo se puede adicionar al tope y solo se puede retirar de él.

Pila Definición La pila es una estructura LIFO (Last In – First Out)

Se utiliza la Lista para implementar la Pila Pila 5 9 Nodo en el tope de la pila

Pila 5 9 Nodo en el tope de la pila 5 9

Pila Operaciones: Pila (Constructor) Push Pop Imprimir pila Buscar elemento en la pila ¿pila vacía?

Pila (Constructor) Al crear una pila, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null. Pila

Cada nodo se representa por medio de dos campos: Campo dato: contiene el valor del nodo Campo siguiente: indica cuál es el nodo con el que se enlaza class Nodo{ Object dato; Nodo siguiente; Nodo(Object o) { dato=o; siguiente=null; } Pila

Crear Pila Al crear una Pila, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null. class Pila{ Nodo cabecera; Pila(){ cabecera=new Nodo(null); } … } Pila

¿pila vacía? Cuando la pila está vacía el campo siguiente de la cabecera es null Pila

Está una pila vacía? Cuando la pila está vacía el campo siguiente de la cabecera es null public boolean estaVacia() { if (cabecera.siguiente==null) { return true; } else{ return false; } Pila

Operación: push Insertar un nuevo nodo a la pila. El elemento que se inserta, pasa a ser el tope de la pila Pila

Push ( La Pila está vacía ) Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado 23 Pila

Push( La pila no está vacía ) Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando Pila

Push (La pila está vacía) Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado public void push(Object o) { Nodo nuevo=new Nodo(null); if ( estaVacia() ) { nuevo=new Nodo(o); cabecera.siguiente=nuevo; } else { nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; } Pila

Push (La pila no está vacía) Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando public void push(Object o) { Nodo nuevo=new Nodo(null); if ( estaVacia() ) { nuevo=new Nodo(o); cabecera.siguiente=nuevo; } else { nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; } Pila

Operación: pop Eliminar un elemento de la pila. El elemento que se elimina es el que esté en el tope. Pop retorna el campo dato del elemento eliminado Pila

Pop Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo Pila

Pop Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo public Object pop() { if (cabecera.siguiente==null) System.out.println("LA PILA ESTA VACIA"); else{ Nodo borrar=cabecera.siguiente; cabecera.siguiente=borrar.siguiente; borrar.siguiente=null; return borrar.dato; } Pila

Desarrolle la operación BuscarEnPila(Object e). La pila no tiene operaciones de consulta, se debe utilizar otra pila para almacenar los elementos que salen cuando se hace push. La pila original debe quedar con todos los elementos dados. Desarrolle la operación Imprimir(). Muestre la complejidad de las operaciones BuscarEnPila(Object e) e Imprimir()

Cola

Definición Una cola es un conjunto ordenado de elementos de un tipo base. Los elementos se insertan a la cola por la parte posterior y se sacan por la parte delantera

Cola Operaciones: Cola (Constructor) Meter Sacar Imprimir cola Buscar elemento en la cola Es una cola vacía?

Cola A W cola cabecera Se manejan dos nodos centinela, uno para cola, por donde entran los elementos, y otro cabecera, por donde salen

A W cola cabecera A W cola cabecera X Cola Entra el elemento x a la cola

A W cola cabecera X A cola cabecera X Cola Sale un elemento de la cola

Crear cola Al crear una lista, se crean el nodo cola y el nodo cabecera. Ambos tienen como dato null y como siguiente null. cola cabecera Cola

Cada nodo se representa por medio de dos campos: Campo dato: contiene el valor del nodo Campo siguiente: indica cuál es el nodo con el que se enlaza class Nodo{ Object dato; Nodo siguiente; Nodo(Object o) { dato=o; siguiente=null; } Cola

Al crear una lista, se crean el nodo cola y el nodo cabecera. Ambos tienen como dato null y como siguiente null. class Cola{ Nodo cabecera; Nodo cola; Cola() { cabecera=new Nodo(null); cola=new Nodo(null); } Cola

¿cola vacía? Cuando la cola está vacía el campo siguiente de la cabecera es null y el campo siguiente de la cola es null cola cabecera Cola

¿cola vacía? Cuando la cola está vacía el campo siguiente de la cabecera es null. El campo siguiente de la cola también es null public boolean estaVacia(){ if (cabecera.siguiente==null) { return true; } else{ return false; } Cola

Meter( La cola está vacía ) Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado El campo siguiente del nodo cola pasa de ser null a ser el nodo que estamos insertado cola cabecera cola cabecera W Cola

Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado El campo siguiente del nodo cola pasa de ser null a ser el nodo que estamos insertado void meter(Object o) { Nodo nuevo=new Nodo(null); if ( estaVacia() ) { nuevo=new Nodo(o); cabecera.siguiente=nuevo; cola.siguiente=nuevo; } Cola

Meter( La cola no está vacía ) cola cabecera W cola cabecera W X Cola

else { nuevo=new Nodo(o); nuevo.siguiente=cola.siguiente; cola.siguiente=nuevo; } Cola

Sacar cola cabecera W X cola cabecera X Cola

public Object sacar() { Nodo borrar=cabecera.siguiente; if(cabecera.siguiente==cola.siguiente){ cabecera.siguiente=null; cola.siguiente=null; borrar.siguiente=null; return borrar.dato; } else{ Nodo aux=cola.siguiente; while( aux.siguiente!=borrar) aux=aux.siguiente; aux.siguiente=null; cabecera.siguiente=aux; return borrar.dato; } Cola

Desarrolle la operación imprimirOrden() que muestra los valores en el orden en que se deben “atender”. La cola debe quedar con los elementos originales.