Tema 3: La estructura de datos Lista

Slides:



Advertisements
Presentaciones similares
¿PARA QUE ESTAMOS AQUÍ? LOS OBJETIVOS DE LA ENCARNACIÓN.
Advertisements

SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR
SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR
1 Datos sobre webloggers Datos extraidos de la encuesta a webloggers disponibles en la web de los autores.
el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Revisión Nº:Descripción:Fecha: 00Elaboración de la documentación30/06/11 Copia Controlada :Nº: F /REV. 00 ACCESO A LA WEB DEL CPR DE TARAZONA Cód.:
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
1 PRINCIPALES INDICADORES DEL DESARROLLO DE LA SOCIEDAD DE LA INFORMACIÓN EN GALICIA CUADRO DE MANDO Apartado: Empresas Septiembre de 2004.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS (MICROEMPRESAS, resultados provisionales) 29 de julio de 2004.
AYUDA A LA FUNCIÓN DOCENTE Internet
CREACIÓN DE PÁGINAS WEB CON SHAREPOINT DESIGNER 2007 (Sesión 2) Ricardo Ferrís Castell ( ) Departament D Informàtica.
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
02- PLAN DOCENTE Febrero 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
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.
IBD Clase 7.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
Pilas y Colas Fundamentos Estructuras de Datos (Programación 2)
Montículos Daniel González Pérez Cristina Sánchez Aragón
Í N D I C E. Í N D I C E P R E S E N T A C I Ó N.
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.
Sistemas de Ecuaciones
RETIRO DE COMALCALCO DIC. 2012
Proyecto para Centros que trabajan una vez por semana.
Ecuaciones y Resolución de Ecuaciones Lineales
Expresiones Racionales
Curso de Programación 1 Plan 97
INFORMATICA I Arreglos 1 CLASE 17.
Árboles binarios. Algoritmos básicos
Tratamiento de listas en Java
1.3 Programación modular. Subprogramas.
Implementación de listas
Listas. Conceptos Generales..
PROGRAMACION DE Pilas o Stacks y Colas
Proyecto Fin de Carrera E.T.S. Ingeniería Informática 26 de Septiembre de 2006 DESARROLLO DE UN COMPONENTE TECLADO ALUMNO: Fco. Javier Sánchez Ramos TUTORES:
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Algoritmos Aleatorizados
CULENDARIO 2007 Para los Patanes.
Índice Sesión I Bloque I (09:30 a 10:30 Horas) Configuración Inicial
BEATRIZ LAFONT VILLODRE
Estructuras de Datos Especificación formal de Listas.
Programación II Colas Igor Santos Grueiro.
Colas y Listas Enlazadas
SUCESIONES Y PROGRESIONES.
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
Inteligencia Artificial Resolver problemas mediante búsqueda
Almacenamiento y Recuperacion de Información TAD_ABB Ana Lilia Laureano Cruces Universidad Autónoma Metroplotiana.
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Inteligencia Artificial Resolver problemas mediante búsqueda
Listas circulares.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
INSTITUTO TECNOLOGICO DE APIZACO
 Introducción  Conceptos El equipo demostrara y mostrara los conceptos, definición y funcionamiento de una las “listas doblemente enlazadas y circulares”
IMPLEMENTACION DE COLAS MEDIANTE LISTAS
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
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.
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.
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.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Listas Dinámicas.
Transcripción de la presentación:

Tema 3: La estructura de datos Lista Estructuras de Datos Ingeniería en Informática Universidad Carlos III de Madrid Laboratorio DEI Curso 2003/04

Listas: descripción lógica LISTA = colección de elementos homogéneos entre los que existe una relación lineal Cada elemento de la lista, a excepción del primero, tiene un único predecesor Cada elemento de la lista, a excepción del último, tiene un único sucesor Nodos y enlaces Laboratorio DEI 2003/04 Estructura de Datos

Listas: descripción lógica Orden de nodos afecta a la función de acceso Según orden de inserción Según clave Ejemplo Lista de calificaciones ::= <Alumno> + {<Alumno>} <Alumno>::= <<DNI>> + <<NIA>> + <Apellido1> + <Apellido2> + <Nombre> + <Calificación> Laboratorio DEI 2003/04 Estructura de Datos

Listas: descripción lógica Listas  Arrays 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 Laboratorio DEI 2003/04 Estructura de Datos

TAD Lista: Posibles implementaciones Estática Dinámica Enlazada Secuencial Laboratorio DEI 2003/04 Estructura de Datos

Listas Simples Lista Simple = colección de elementos homogéneos cuya relación lineal es determinada por la posición del elemento en la lista Comienzo + Enlace al siguiente ( puntero) Definición: <listaSimple> ::= <comienzo> + {<nodo>} <nodo> ::= <informacion> + <enlace> <informacion> ::= <<dato>>{<<dato>>} <enlace> ::= (<<ReferenciaNodo>> | NULL) <comienzo> :: =<enlace> Laboratorio DEI 2003/04 Estructura de Datos

TAD Lista Simple: operaciones Creación de una lista crearLista (nombreLista) Comprobación del estado listaVacia(nombreLista)  Booleano listaVacia(referenciaNodo)  Booleano listaLlena(nombreLista)  Booleano insertar(nombreLista, valorInfo, posicion) insertar(nombreLista, valorInfo) Inserción de nodos Borrado de nodos borrar(nombreLista, valorInfo) buscar(nombreLista, dato)  informacion buscar(nombreLista, dato)  referenciaNodo pertenece(nombreLista,informacion)  Booleano Búsqueda de un nodo Recorrido de la lista recorrer(nombreLista info(referenciaNodo)  Informacion siguiente(referenciaNodo)  enlace Acceso a los nodos Modificación de los nodos asignarInfo(referenciaNodo, valorInformacion) asignarEnlace(referenciaNodo, valorEnlace) Laboratorio DEI 2003/04 Estructura de Datos

Listas Simples Aclaraciones a las operaciones: Ejemplo y pseudocódigo listaLlena sólo tiene sentido si lista es acotada acceso y modificación serán métodos get y put Ejemplo y pseudocódigo insertar (nombreLista, valorInfo, posición) insertar (nombreLista, valorInfo) borrar (nombreLista, valorInfo) buscar (nombreLista, dato)  información recorrer (nombreLista) Laboratorio DEI 2003/04 Estructura de Datos

Laboratorio DEI 2003/04 Estructura de Datos

Laboratorio DEI 2003/04 Estructura de Datos

Listas Ordenadas La posición de cada nodo viene determinada por el valor de uno o más campos obligatorios de información del nodo denominados clave No se permite tener dos nodos con la misma clave Definición <listaOrdenada> ::= <comienzo> + {<nodo>} <comienzo> ::= <enlace> <enlace> ::= (<<ReferenciaNodo>> | NULL) <nodo> ::= <clave> + <informacion> + <enlace> <clave> ::= <<dato>>{<<dato>>} <informacion> ::= {<<dato>>} Laboratorio DEI 2003/04 Estructura de Datos

TAD Lista Ordenada: operaciones Creación de una lista crearLista (nombreLista) Comprobación del estado listaVacia(nombreLista)  Booleano listaVacia(referenciaNodo)  Booleano listaLlena(nombreLista)  Booleano Inserción de nodos insertar(nombreLista, valorClave, valorInfo) Borrado de nodos borrar(nombreLista, valorClave) buscar(nombreLista, valorClave)  Informacion buscar(nombreLista, valorClave)ReferenciaNodo pertenece(nombreLista,valorClave)  Booleano Búsqueda de un nodo Recorrido de la lista recorrer(nombreLista Acceso a los nodos clave(referenciaNodo)  Clave info(referenciaNodo)  Informacion siguiente(referenciaNodo)  enlace Modificación de los nodos asignarClave(referenciaNodo, valorClave) asignarInfo(referenciaNodo, valorInformacion) asignarEnlace(referenciaNodo, valorEnlace) Laboratorio DEI 2003/04 Estructura de Datos

Pilas Pila = colección ordenada de elementos homogéneos en la que sólo se pueden añadir y eliminar elementos por el principio de la misma (cabecera) filosofía LIFO Definición <pila> ::= <cabecera> + {<nodo>} <cabecera> ::= <enlace> <enlace> ::= (<<ReferenciaNodo>> | NULL) <nodo> ::= <informacion> + <enlace> <informacion> ::= <<dato>>{<<dato>>} Laboratorio DEI 2003/04 Estructura de Datos

TAD Pila: operaciones Creación de pila Comprobación del estado crearPila (nombrePila) Comprobación del estado pilaVacia(nombrePila)  Booleano pilaLlena(nombrePila)  Booleano Inserción de nodos push(nombrePila, valorInfo) Extracción de nodos pop(nombrePila)  informacion Acceso a la cabecera* cabecera(nombrePila)  informacion * Opcional: Accede a la cabecera sin eliminarla Acceso a los nodos info(referenciaNodo)  Informacion siguiente(referenciaNodo)  Enlace Modificación de los nodos asignarInfo(referenciaNodo, valorInformacion) asignarEnlace(referenciaNodo, valorEnlace) Laboratorio DEI 2003/04 Estructura de Datos

TAD Pila: ejemplos de aplicación Vuelta atrás en un navegador web Comando “undo” en un editor Secuencia de métodos activos en la Java Virtual Machine: bar PC = 1 m = 6 Cuando se invoca un método, se inserta en la pila una nueva entrada Por cada método se guardan: variables locales valor devuelto contador de programa Cuando el método finaliza se saca ese elemento de la pila y se devuelve el control al método que esté en la cabecera main() { int i = 5; foo(i); } foo(int j) { int k; k = j+1; bar(k); } bar(int m) { … } foo PC = 3 j = 5 k = 6 main PC = 2 i = 5 Laboratorio DEI 2003/04 Estructura de Datos

Colas Cola = colección ordenada de elementos homogéneos en la que sólo se pueden añadir elementos por el final y se eliminan por el principio (frente) filosofía FIFO Definición <cola> ::= <frente> + <final> + {<nodo>} <frente> ::= <enlace> <enlace> ::= (<<ReferenciaNodo>> | NULL) <final> ::= <enlace> <nodo> ::= <informacion> + <enlace> < informacion > ::= <<dato>>{<<dato>>} Laboratorio DEI 2003/04 Estructura de Datos

TAD Cola: operaciones Creación de cola Comprobación del estado crearCola (nombreCola) Comprobación del estado colaVacia(nombreCola)  Booleano colaLlena(nombreCola)  Booleano Inserción de nodos encolar(nombreCola, valorInfo) Extracción de nodos desencolar(nombreCola)  informacion Acceso a la cabecera* cabecera(nombreCola)  informacion * Opcional: Accede a la cabecera sin eliminarla Acceso a los nodos info(referenciaNodo)  Informacion siguiente(referenciaNodo)  Enlace Modificación de los nodos asignarInfo(referenciaNodo, valorInformacion) asignarEnlace(referenciaNodo, valorEnlace) Laboratorio DEI 2003/04 Estructura de Datos

TAD Cola: casos particulares Colas circulares Implementación estática como array Referencia al primero y al último Aritmética módulo C (Capacidad de la cola) Llevar la cuenta del número de elementos Laboratorio DEI 2003/04 Estructura de Datos

TAD Cola: casos particulares Colas de prioridad Laboratorio DEI 2003/04 Estructura de Datos

TAD Cola: ejemplos de aplicación Listas de espera Acceso a recursos compartidos dedicados (v.g., impresoras) Multiprogramación de la CPU Laboratorio DEI 2003/04 Estructura de Datos

Listas Doblemente Enlazadas (LDE) Relación lineal en ambos sentidos Enlace a predecesor y antecesor en cada nodo Recorrido puede ser en ambos sentidos Pueden ser simples u ordenadas Definición: <lde> ::= <comienzo> + {<nodo>} <comienzo> :: = <enlace> <enlace> ::= (<<ReferenciaNodo>> | NULL) <nodo> ::= <informacion> + <predecesor> + <sucesor> <predecesor> ::= <enlace> <sucesor> ::= <enlace> <informacion> ::= <<dato>>{<<dato>>} Laboratorio DEI 2003/04 Estructura de Datos

LDE: operaciones Creación de una lista Comprobación del estado crearLista(nombreLista) Comprobación del estado listaVacia(nombreLista)  Booleano listaVacia(referenciaNodo)  Booleano listaLlena(nombreLista)  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, sentido) Acceso a los nodos info(referenciaNodo)  Informacion anterior(referenciaNodo)  enlace siguiente(referenciaNodo)  enlace Modificación de los nodos asignarInfo(referenciaNodo, valorInformacion) asignarAnterior(referenciaNodo, valorEnlace) asignarSiguiente(referenciaNodo, valorEnlace) Laboratorio DEI 2003/04 Estructura de Datos

Técnicas de Simplificación  A B C D Algunos elementos (principio y final) se tratan como casos especiales al implementar las operaciones Rediseño de estructuras para que los elementos terminales se traten igual que el resto Estructuras auxiliares Centinelas Cabeceras Laboratorio DEI 2003/04 Estructura de Datos

Técnica de Simplificación (i) Búsqueda en lista ordenada: evaluar dos condiciones buscar(nombreLista, valorClave)  informacion INICIO posicion  nombreLista.comienzo continuar  CIERTO MIENTRAS NO(listaVacia(posicion)) Y continuar) SI (clave(posicion) < valorClave) ENTONCES posicion  siguiente(posicion) SI NO continuar  FALSO SI(clave(posicion) = valorClave) ENTONCES DEVOLVER informacion(posicion) SI NO DEVOLVER error ese nodo no está en la lista FIN-SI FIN-SI FIN-MIENTRAS FIN Laboratorio DEI 2003/04 Estructura de Datos

Centinela en listas ordenadas Centinela = nodo auxiliar al final de la lista Para buscar un elemento: Colocar en el centinela el valor buscado Condición de terminación: se encuentra el valor buscado o uno mayor Si se llega al centinela, el elemento no está en la lista Ejemplo e Implementación Laboratorio DEI 2003/04 Estructura de Datos

Centinelas: ejemplos Buscar(comienzo, 15, centinela, posición) Laboratorio DEI 2003/04 Estructura de Datos

Técnica de simplificación (ii) Inserción en lista ordenada: caso especial insertarPosicion (nombreLista, valorClave, valorInfo, anterior, posterior) // Coloca el nodo entre anterior y posterior. Si anterior es vacío, entonces nodo será el primer elemento de la lista, si posterior es vacío será el último INICIO nodo  nuevoNodo(valorClave, valorInfo) asignarEnlace(nodo, posterior) SI listaVacia(anterior) ENTONCES nombreLista.comienzo nodo SI NO asignarEnlace(anterior, nodo) FIN SI FIN Laboratorio DEI 2003/04 Estructura de Datos

Cabecera en listas ordenadas Cabecera = nodo auxiliar situado al principio de la lista, cuyos contenidos (clave e info) no pertenecen a la lista Consecuencias: No hace falta marcar comienzo No hace falta caso especial cuando lista es vacía Laboratorio DEI 2003/04 Estructura de Datos

Cabeceras: ejemplos insertarElemento (cabecera, 7) Laboratorio DEI 2003/04 Estructura de Datos

Cabecera + centinela Usar el mismo nodo auxiliar como cabecera y centinela Convertir la lista en circular Laboratorio DEI 2003/04 Estructura de Datos

Otras técnicas de simplificación Inserción ordenada sin puntero al anterior Buscar posición del primer elemento mayor que la clave a insertar, colocar un nodo nuevo detrás e intercambiar Borrado sin puntero al anterior Buscar posición del elemento a borrar Copiar información del siguiente a esa posición Borrar el siguiente (no funciona para borrar el último elemento  hay que usar centinela) Laboratorio DEI 2003/04 Estructura de Datos

Estructuras Intrusivas Información de interés vs. Datos de control Cómo se almacenan: Las estructuras intrusivas incluyen la información de interés entre sus elementos Las estructuras no intrusivas almacenan la información de interés en un área separada, incluyendo punteros a la misma Ejemplo: mantener 2 listas (v.g., alumnos) ordenadas por distintos campos clave k1, k2, etc. (v.g., NIA y NIF) Listas intrusivas independientes Listas intrusivas con información compartida Listas no intrusivas Laboratorio DEI 2003/04 Estructura de Datos

Listas intrusivas independientes Información duplicada Pueden producirse inconsistencias y se ocupa más espacio Laboratorio DEI 2003/04 Estructura de Datos

Listas intrusivas con info compartida Incorporar un puntero por cada clave de ordenación Hay que modificar la estructura para dar acceso a través de un nuevo campo Laboratorio DEI 2003/04 Estructura de Datos

Listas no intrusivas Separar info de datos de control La incorporación de nuevas listas no afecta a la definición de las previas Laboratorio DEI 2003/04 Estructura de Datos