Listas Dinámicas.

Slides:



Advertisements
Presentaciones similares
TDA LISTA ESTRUCTURAS DE DATOS.
Advertisements

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
Estructuras de datos y algoritmos
Operaciones sobre un árbol
Tratamiento de listas en Java
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Colas y Listas Enlazadas
Estructuras dinámicas de datos, TAD Lista, parte 2
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Pilas y Colas Estructuras de Datos.
Árboles Binarios Estructuras de Datos.
LISTA DOBLEMENTE ENLAZADA
Grafos..
Unidad 4: LISTAS.
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
INSTITUTO TECNOLOGICO DE APIZACO
Algoritmos y Estructuras de datos Listas Doblemente enlazadas
M.C. Meliza Contreras González
Laboratorio de programación
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.
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: LISTAS.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Introducción a punteros en C
Estructura de Datos Luis Humeau Waldi Saturno
L ISTAS ENLAZADAS M.IA. Daniel Alejandro García López.
INSTITUTO TECNOLÓGICO SUPERIOR DE FELIPE CARRILLO PUERTO. MATERIA: Estructura De Datos TIPO: Presentación (Unidad 3 Estructura lineales ) DOCENTE: MTL.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Árboles binarios. Algoritmos básicos
¿Qué es una consulta? En bases de datos, una consulta es el método para acceder a los datos en las bases de datos. Con las consultas se puede modificar,
Estructuras PILA - COLA - LISTA.
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
TAD’s ARBOLES GENERALIZADOS
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2016
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Listas enlazadas particulares
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
LISTAS..
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
TUTORIAL PSeint.
Sonia Rueda Herencia y Polimorfismo
Estructuras de datos y algoritmos
Introducción a las estructuras de datos
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.
Árboles clase 6 Apoyo de Práctica. Resumen ●Árboles ○Concepto ○Características ○Dinámica ○Recorridos o barridos. ●Ejercicio Sugerido.
Métodos de búsqueda. Introdución Esta operación se utiliza basicamente para recuperar datos que se habian almacenado con anticipación. El resultado puede.
Arboles M.C. José Andrés Vázquez FCC/BUAP
Unidad V :- Integridad de datos.
Árboles Binarios de Búsqueda (ABB)
Estructuras de Datos Dinámicas
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Estructuras Dinámicas
EL TDA COLA Estructuras de Datos.
Listas ligadas Dra. María de Lourdes López García
UNIDAD 8 Agregar al Inicio
UNIDAD 3 LISTAS LISTAS CIRCULARES Integrantes: Galmiche Vera Orlando Mandujano González Ramón Enrique Salvador Magaña Kelyn Osmara.
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
ÁRBOLES DE EXPRESION. Un árbol de expresión sirve para evaluar expresiones del tipo: (a+b)*c/d Para que un árbol represente una expresión se deben tomar.
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
Árboles Binarios Estructuras de Datos.
COLAS O LINEA DE ESPERA EN C# SHARP. ¿QUE ES UNA COLA O LINEA DE ESPERA?  Es una estructura de datos que almacena elemento en una lista y permite acceder.
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
Departamento de Ingeniería de Sistemas e Industrial
Transcripción de la presentación:

Listas Dinámicas

Listas Listas  Arrays Operaciones Tipos de listas Listas son flexibles y permiten cambio de implementación Operaciones Insertar, Borrar, Modificar, etc. Tipos de listas Simples Ordenadas Pilas Colas Doblemente enlazadas (LDE) Circulares

TAD Lista Simple: operaciones Creación de una lista crearLista (nombreLista) Comprobación del estado listaLlena (nombreLista)  Booleano listaVacia(nombreLista)  Booleano listaVacia (referenciaNodo)  Booleano Inserción de nodos Insertar (nombreLista, valorInfo, posicion) Insertar (nombreLista, valorInfo) Borrado de nodos Borrar (nombreLista, valorInfo) Búsqueda de un nodo Buscar (nombreLista, dato)  informacion Buscar (nombreLista, dato)  referenciaNodo Pertenece (nombreLista,informacion)  Booleano Recorrido de la lista recorrer(nombreLista) Acceso a los nodos Info (referenciaNodo)  Informacion Siguiente (referenciaNodo)  enlace Modificación de los nodos asignarInfo (referenciaNodo, valorInformacion) asignarEnlace (referenciaNodo, valorEnlace)

Definición de la lista Se compone de nodos enlazados. Se debe hacer en una clase separada. Sólo requiere conocer dónde se encuentra el primer nodo de la lista. Para el nombre de la referencia al primer nodo se hace uso de la metáfora: “cabeza de la lista” o “inicio”. Una lista vacía comenzaría con un valor null en el campo sig (siguiente)

¿Qué es un Nodo? Un nodo es un registro con varios campos: unos campos de datos y un campo apuntador. Los primeros son información y el último es una referencia al siguiente nodo de la lista. El último nodo de la lista contiene una referencia siguiente "null".

Clase nodo public class Nodo { int data; // almacena el dato Nodo sig; //”liga” al próximo nodo } El campo data representa los datos que almacena el nodo. Puede ser de diferentes tipos de datos, además que éste puede contener la cantidad de datos que se ocupen.

Listas sig

Creación de una lista Lista vacía

Inserción de un nodo CASO 1. Inserción al principio de la lista

Caso 1. Inserción al principio Insertarinicio (inicio, info) //este algoritmo inserta un nodo al inicio de la lista// (nuevo: del tipo inicio) 1-     crear (nuevo); 2-     hacer nuevo.dato = info nuevo.sig = inicio inicio = nuevo

Caso 2. Inserción en medio de la lista Caso 2.1 Insertar antes de Caso 2.2 Insertar después de info Ref nuevo inicio aux

Caso 2.1 Insertar antes de InsertAntes (inicio, info, ref) //aux,nuevo,T son variables de tipo inicio. OK es una variable boolean 1- hacer aux = inicio, Ok = verdadero 2- mientras (aux.dato != ref) y (Ok == verdadero) Si aux.sig != null T = aux, aux = aux.sig. Sino OK = falso  3- Si Ok = = verdadero //se encontró el dato Crear (nuevo) nuevo.dato = info nuevo.sig =aux Si aux = = inicio //es el primer nodo entonces inicio = nuevo si no T.sig = nuevo

Caso 2.2 InsertDespues InsertDespues (inicio, info, Ref) //nuevo y aux so n variables del tipo de inicio, OK es boolean  1- aux = inicio, OK = verdadero  2- Mientras (aux.dato != ref) y (OK == verdadero) hacer si aux.sig != null entonces aux = aux.sig si no OK = Falso 3- Si OK = = verdadero entonces crear (nuevo) nuevo.dato = info nuevo.sig = aux.sig aux.sig = nuevo

Caso 3. Inserción al final de la lista Insertafinal (inicio, info) // nuevo y T son del tipo inicio 1- Hacer T = inicio 2- mientras T.sig != null recorrer la lista hasta llegar al final 3-  Crear (nuevo) 4-   nuevo.dato = info nuevo.sig = null T.sig = nuevo

Eliminar Nodos Casos 1 Eliminar el primer nodo Elimina primero (inicio)  // Se redefine el apuntador inicio. //aux es del tipo inicio 1- hacer Q = inicio; 2- Si aux.sig != null //que si hay mas de un elemento Entonces inicio = aux.sig Sino inicio = null 3- aux = null //quita aux

Caso 2 Eliminar en medio Caso 2.1 Elimina nodo con X información EliminaNodoX (inicio, x) //aux y T son variables del mismo tipo de inicio, Ok es boolean 1- Hacer aux = inicio , Ok = verdadero 2- Repetir mientras (aux.dato != x) y (Ok) hacer Si aux.sig != null //hay más nodos entonces T = aux, aux = aux.sig si no Ok = falso 3- Si Ok == falso entonces //el elemento x no existe si no si inicio == aux //x es el primer elemento de la lista entonces inicio = aux.sig si no T.sig = aux.sig   aux = null

Caso 2.2 Elimina nodo antes de X información Algoritmo EliminaAntesX (inicio, x)  //aux , T y R son variables del mismo tipo de inicio (apuntador), Ok es boolean 1- Si inicio.dato == x entonces //no hay nodo que precede a x sino aux = inicio; T = inicio; Ok = falso; mientras (( aux.info!=x) y (!Ok)) si aux.sig != null entonces R = T; T = aux; aux= aux.sig; si no Ok = verdadero;  2- Si Ok entonces //el elemento x no existe si no si inicio.sig = aux //el elemento a eliminar es el primero entonces inicio = aux sino R.sig = aux; T = null; R T aux inicio X

Caso 3 Elimina ultimo nodo Elimina ultimo (inicio)  //Se pone un null en el campo sig del penúltimo elemento y se quita el ultimo. //aux, T son del mimo tipo que inicio 1. Si inicio.sig == null //que la lista tiene un solo elemento Entonces inicio = null //quita (inicio) Si no aux = inicio 2. Mientras aux.sig != null hacer T = aux aux = aux.sig  3. T.sig = null //quita T aux = null //quita aux

Recorrido de una lista dinámica Metodo Correlista (Nodo inicio); //imprime cada dato de la lista  { nodo aux = new nodo(); aux = inicio; while (aux.sig != null) { escribir (aux.dato); aux = aux.sig; }

Buscar un nodo con alguna característica Método Busca (Nodo inicio, info){ //Devuelve exito con falso o verdadero nodo aux = new nodo(); boolean exito = falso aux = inicio; while (aux.sig != null && aux.dato != info) aux = aux.sig; if ( aux.dato = = info ) exito = verdadero; return exito }