LISTAS
ISSAC VELAZQUEZ
MAYEN
UNIDAD III
3.1 DEFINICION DE LISTAS
Características y Terminología
3.2 TIPOD DE LISTAS
Simples, Dobles Ligadas, Circulares
3.3CONTRUCCION Y OPETACIONES DE LISTAS
Circulares
Definicion
¿QUE SON LAS LISTAS?
Las listas son una sucesión de cero o más
elementos .
Esta es una definición muy simple y que no
aclara demasiado en términos informáticos, así
que profundizaremos un poco más.
Hay varios tipos de listas, las hay enlazadas, no
enlazadas, ordenadas y no ordenadas.
Nosotros vamos a estudiar las listas enlazadas,
tanto ordenadas como no ordenadas.
La diferencia que existe entre las listas
enlazadas y las no enlazadas es que las
enlazadas utilizan punteros, es decir, asignación
dinámica de memoria, lo que optimiza la gestión
de la misma. Una lista no enlazada es un simple
array, y por lo tanto es un bloque contiguo de
memoria, mientras que una lista enlazada es un
conjunto de nodos que no tienen porque ocupar
posiciones contiguas de memoria.
Las listas enlazadas proporcionan una mejor utilización de memoria en
estas situaciones. Las
listas enlazadas permiten al programa adaptarse a las necesidades de
almacenamiento en tiempo de ejecución.
3.2
“
Por lo general, los nodos de las listas enlazadas no se
almacenan contiguamente en memoria, sino que son
adyacentes en forma lógica.
Este diagrama presenta una lista de enlace simple (cada
nodo contiene una referencia al siguiente nodo en la lista).
“
◇ El puntero anterior del primer elemento debe apuntar hacia NULL (el inicio de
la lista).
El puntero siguiente del último elemento debe apuntar hacia NULL (el fin de la
lista).
Para acceder a un elemento, la lista puede ser recorrida en ambos sentidos:
comenzando por el inicio, el puntero siguiente permite el desplazamiento hacia
el próximo elemento; comenzando por el final, el puntero anterior permite el
desplazamiento hacia el elemento anterior.
“
◇ Una lista enlazada circular no es más
que una lista enlazada en la que el último
elemento de la lista está enlazado al
primer elemento de la lista, formando un
círculo cerrado.
“
◇ CONRUCCION Y
OPERACIONES DE LISTAS.
SINTAXIS
◇ 1. Llamar a estaVacia para determinar si la lista está vacía (línea 71).
◇ 2. Si la lista está vacía, asignar primerNodo y ultimoNodo al nuevo
NodoLista que se inicializó con
◇ elementoInsertar (línea 72). El constructor de NodoLista en las líneas
13 a 16 llama al constructor
◇ de las líneas 20 a 24 para establecer la variable de instancia datos,
para hacer referencia al objeto elementoInsertar
◇ que se pasa como argumento y para establecer la referencia
siguienteNodo en null.
◇ 3. Si la lista no está vacía, en la línea 74 se enlaza el nuevo nodo a la
lista, asignando a ultimoNodo y a
◇ ultimoNodo.siguienteNodo la referencia al nuevo NodoLista que se
inicializó con elementoInsertar.
◇ El constructor de NodoLista (líneas 13 a 16) establece la variable de
instancia datos para hacer
◇ referencia al objeto elementoInsertar que se pasa como argumento y
establece la referencia siguienteNodo
◇ en null, ya que éste es el último nodo en la lista.
Ejemplo
Insertar un elemento en una
lista vacía
Este es, evidentemente, el caso
más sencillo. Partiremos de que
ya tenemos el nodo a insertar y,
por supuesto un puntero que
apunte a él, además el puntero a
la lista valdrá NULL:
Lista vacía
El proceso es muy simple,
bastará con que:
nodo->siguiente apunte a NULL.
Lista apunte a nodo.
1. Asignar ultimo Nodo.datos (los datos
que se van a eliminar de la lista) a
elemento Eliminado (línea
100).
2. Si primer Nodo y ultimo Nodo hacen
referencia al mismo objeto (línea 103),
quiere decir que la lista sólo
tiene un elemento en ese momento. Por
lo tanto, en la línea 104 se establece a
primer Nodo y ultimo-
Nodo en null para eliminar ese nodo de
la lista (dejándola vacía).
3. Si la lista tiene más de un nodo, crear
la referencia Nodo Lista llamada actual
y asignarla a primer Nodo
(línea 107).

Listas

  • 1.
  • 2.
    UNIDAD III 3.1 DEFINICIONDE LISTAS Características y Terminología 3.2 TIPOD DE LISTAS Simples, Dobles Ligadas, Circulares 3.3CONTRUCCION Y OPETACIONES DE LISTAS Circulares
  • 3.
    Definicion ¿QUE SON LASLISTAS? Las listas son una sucesión de cero o más elementos . Esta es una definición muy simple y que no aclara demasiado en términos informáticos, así que profundizaremos un poco más. Hay varios tipos de listas, las hay enlazadas, no enlazadas, ordenadas y no ordenadas. Nosotros vamos a estudiar las listas enlazadas, tanto ordenadas como no ordenadas. La diferencia que existe entre las listas enlazadas y las no enlazadas es que las enlazadas utilizan punteros, es decir, asignación dinámica de memoria, lo que optimiza la gestión de la misma. Una lista no enlazada es un simple array, y por lo tanto es un bloque contiguo de memoria, mientras que una lista enlazada es un conjunto de nodos que no tienen porque ocupar posiciones contiguas de memoria.
  • 4.
    Las listas enlazadasproporcionan una mejor utilización de memoria en estas situaciones. Las listas enlazadas permiten al programa adaptarse a las necesidades de almacenamiento en tiempo de ejecución. 3.2
  • 5.
    “ Por lo general,los nodos de las listas enlazadas no se almacenan contiguamente en memoria, sino que son adyacentes en forma lógica. Este diagrama presenta una lista de enlace simple (cada nodo contiene una referencia al siguiente nodo en la lista).
  • 6.
    “ ◇ El punteroanterior del primer elemento debe apuntar hacia NULL (el inicio de la lista). El puntero siguiente del último elemento debe apuntar hacia NULL (el fin de la lista). Para acceder a un elemento, la lista puede ser recorrida en ambos sentidos: comenzando por el inicio, el puntero siguiente permite el desplazamiento hacia el próximo elemento; comenzando por el final, el puntero anterior permite el desplazamiento hacia el elemento anterior.
  • 7.
    “ ◇ Una listaenlazada circular no es más que una lista enlazada en la que el último elemento de la lista está enlazado al primer elemento de la lista, formando un círculo cerrado.
  • 8.
  • 9.
  • 10.
    ◇ 1. Llamara estaVacia para determinar si la lista está vacía (línea 71). ◇ 2. Si la lista está vacía, asignar primerNodo y ultimoNodo al nuevo NodoLista que se inicializó con ◇ elementoInsertar (línea 72). El constructor de NodoLista en las líneas 13 a 16 llama al constructor ◇ de las líneas 20 a 24 para establecer la variable de instancia datos, para hacer referencia al objeto elementoInsertar ◇ que se pasa como argumento y para establecer la referencia siguienteNodo en null. ◇ 3. Si la lista no está vacía, en la línea 74 se enlaza el nuevo nodo a la lista, asignando a ultimoNodo y a ◇ ultimoNodo.siguienteNodo la referencia al nuevo NodoLista que se inicializó con elementoInsertar. ◇ El constructor de NodoLista (líneas 13 a 16) establece la variable de instancia datos para hacer ◇ referencia al objeto elementoInsertar que se pasa como argumento y establece la referencia siguienteNodo ◇ en null, ya que éste es el último nodo en la lista.
  • 11.
  • 12.
    Insertar un elementoen una lista vacía Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL: Lista vacía El proceso es muy simple, bastará con que: nodo->siguiente apunte a NULL. Lista apunte a nodo.
  • 13.
    1. Asignar ultimoNodo.datos (los datos que se van a eliminar de la lista) a elemento Eliminado (línea 100). 2. Si primer Nodo y ultimo Nodo hacen referencia al mismo objeto (línea 103), quiere decir que la lista sólo tiene un elemento en ese momento. Por lo tanto, en la línea 104 se establece a primer Nodo y ultimo- Nodo en null para eliminar ese nodo de la lista (dejándola vacía). 3. Si la lista tiene más de un nodo, crear la referencia Nodo Lista llamada actual y asignarla a primer Nodo (línea 107).