LISTAS ENLAZADAS PARTICULARES CONTENIDO Introduccin Conceptos Tipos de

  • Slides: 16
Download presentation
LISTAS ENLAZADAS PARTICULARES

LISTAS ENLAZADAS PARTICULARES

CONTENIDO Introducción Conceptos Tipos de Listas Simplemente ligadas Dobles Circulares Listas de listas Operaciones

CONTENIDO Introducción Conceptos Tipos de Listas Simplemente ligadas Dobles Circulares Listas de listas Operaciones en listas Ventajas sobre los arreglos Cursores Declaración en C++

INTRODUCCIÓN El principal beneficio de las listas enlazadas respecto a los arreglos convencionales es

INTRODUCCIÓN El principal beneficio de las listas enlazadas respecto a los arreglos convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento. Las listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto de la lista en tiempo constante, pero no permiten un acceso aleatorio.

CONCEPTOS Lista enlazada: Consiste en una secuencia de nodos, en los que se guardan

CONCEPTOS Lista enlazada: Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias al nodo anterior y/o posterior. Cabeza: Al primer nodo de una lista enlazada Fin: Al ultimo nodo de una lista enlazada

TIPOS DE LISTAS ENLAZADAS Listas simples enlazadas: Tiene un enlace por nodo. Este enlace

TIPOS DE LISTAS ENLAZADAS Listas simples enlazadas: Tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor Nulo o lista Vacia, si es el último nodo.

TIPOS DE LISTAS ENLAZADAS Listas doblemente enlazadas: Cada nodo tiene dos enlaces: uno apunta

TIPOS DE LISTAS ENLAZADAS Listas doblemente enlazadas: Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor Nulo o la lista vacia si es el primer nodo; y otro que apunta al siguiente nodo, o apunta al valor Nulo o la lista vacia si es el último nodo.

TIPOS DE LISTAS ENLAZADAS Listas enlazadas circulares: En una lista enlazada circular, el primer

TIPOS DE LISTAS ENLAZADAS Listas enlazadas circulares: En una lista enlazada circular, el primer y el último nodo están unidos. Para recorrer una lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se regrese al nodo original

TIPOS DE LISTAS ENLAZADAS Listas de listas: El campo de datos de un nodo

TIPOS DE LISTAS ENLAZADAS Listas de listas: El campo de datos de un nodo puede ser otra lista enlazada.

OPERACIONES EN LISTAS Recorrido: Consiste en visitar cada uno de los nodos que forman

OPERACIONES EN LISTAS Recorrido: Consiste en visitar cada uno de los nodos que forman la lista. Inserción: Consiste en agregar un nuevo nodo a la lista Borrado: Consiste en quitar un nodo de la lista, redefiniendo las ligas que correspondan. Insertar un nodo al inicio Insertar un nodo antes o después de cierto nodo Insertar un nodo al final Eliminar el primer nodo Eliminar el último nodo Eliminar un nodo con cierta información Eliminar el nodo anterior o posterior a cierta info. Búsqueda: Consiste en visitar cada uno de los nodos hasta encontrar el elemento dado.

VENTAJAS SOBRE LOS ARREGLOS Los elementos se pueden insertar en una lista indefinidamente mientras

VENTAJAS SOBRE LOS ARREGLOS Los elementos se pueden insertar en una lista indefinidamente mientras que un arreglo tarde o temprano se llenará o necesitará ser redimensionado, una costosa operación que incluso puede no ser posible si la memoria se encuentra fragmentada.

DESVENTAJAS SOBRE LOS ARREGLOS Las listas son de acceso secuencial, y sólo puede ser

DESVENTAJAS SOBRE LOS ARREGLOS Las listas son de acceso secuencial, y sólo puede ser recorridas en una dirección. El acceso secuencial es más lento en las listas. Se requiere de almacenamiento extra para las referencias Puede resultar lento asignar memoria para cada nuevo elemento.

LISTAS BASADAS EN CURSORES Algunos lenguajes como FORTRAN, ALGOL, no tienen apuntadores. Si se

LISTAS BASADAS EN CURSORES Algunos lenguajes como FORTRAN, ALGOL, no tienen apuntadores. Si se trabaja con un lenguaje tal, se pueden simular los apuntadores mediante cursores; esto es, con enteros que indican posiciones en los arreglos. L=5 1 d 2 3 4 c 4 5 Disponible=6 7 6 0 a 6 8 2 7 e 0 8 b 3

INSERCIÓN EN CURSORES g 1 L=6 d 2 3 4 c 4 Disponible=2 7

INSERCIÓN EN CURSORES g 1 L=6 d 2 3 4 c 4 Disponible=2 7 6 0 5 a 8 6 g 5 7 e 0 8 b 3

ELIMINACIÓN EN CURSORES 8 1 L=6 d 2 3 4 c 4 Disponible=8 7

ELIMINACIÓN EN CURSORES 8 1 L=6 d 2 3 4 c 4 Disponible=8 7 6 0 5 a 3 6 g 5 7 e 0 8 2

EJEMPLOS DE DECLARACIÓN EN C++ Lista Simple struct lista { Tipo. Dato dato; lista

EJEMPLOS DE DECLARACIÓN EN C++ Lista Simple struct lista { Tipo. Dato dato; lista *siguiente; }; Lista doblemente enlazada struct lista_doble { Tipo. Dato dato; lista_doble *siguiente; lista_doble *anterior; };

TAREA Lista enlazada que permita ademas: Insertar al principio Insertar al final Insertar en

TAREA Lista enlazada que permita ademas: Insertar al principio Insertar al final Insertar en la posición indicada Insertar en orden ASC/DESC Buscar un nodo según un valor Localizar la posición de un nodo Obtener el ultimo nodo