Vous êtes sur la page 1sur 7

Estructuras de datos:

Listas enlazada simple


UNIVERSIDAD CATÓLICA DE COLOMBIA
FACULTAD DE INGENIERÍA Estructuras de datos
2011-1
PROGRAMA DE SISTEMAS

Objetivo:

 Implementar una lista enlazada simple en C++y aplicar la operaciones básicas sobre esta.

Recursos:

 Sistema Operativo Windows XP

 Zinjai /Dev C++


UNIVERSIDAD CATÓLICA DE COLOMBIA
FACULTAD DE INGENIERÍA Estructuras de datos
2011-1
PROGRAMA DE SISTEMAS

Estructuras dinámicas de datos:


Las estructuras dinámicas de datos son estructuras que cuya dimensión puede crecer o disminuir
durante la ejecución del programa. Una estructura dinámica de datos es una colección de elementos
llamados nodos. Al contrario que un arreglo, que contiene espacio para almacenar un número fijo de
elementos, una estructura dinámica de datos se amplía y contrae durante la ejecución del programa.
Las estructuras dinámicas de datos se pueden dividir en dos grandes grupos:
 Lineales: listas enlazadas, pilas, colas
 No lineales: árboles, grafos

Listas enlazadas lineales

Listas simples enlazadas

La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta
al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo.

Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al siguiente nodo

Lista Doblemente Enlazada

Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías.
Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el primer nodo; y
otro que apunta al nodo siguiente, o apunta al valor NULL si es el último nodo.

Una lista doblemente enlazada contiene tres valores: el valor, el link al nodo siguiente, y el link al
anterior

Listas enlazadas circulares

En una lista enlazada circular, el primer y el último nodo están unidos juntos. Esto se puede hacer tanto
para listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista enlazada
circular podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se
regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas
UNIVERSIDAD CATÓLICA DE COLOMBIA
FACULTAD DE INGENIERÍA Estructuras de datos
2011-1
PROGRAMA DE SISTEMAS

como listas sin comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers para “ingerir”
datos, y para visitar todos los nodos de una lista a partir de uno dado.

Una lista enlazada circular que contiene tres valores enteros

Listas enlazadas circulares simples

Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del
último apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo
eficientemente insertados después de uno que ya tengamos referenciado. Por esta razón, es usual
quedarse con una referencia solamente al último elemento en una lista enlazada circular simple, esto
nos permite rápidas inserciones al principio, y también permite accesos al primer nodo desde el puntero
del último nodo.

Lista Enlazada Doblemente Circular

En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares a los de la lista
doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último y el enlace
siguiente del último nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y
eliminaciones pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque
estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de
acceso externo puede establecer el nodo apuntado que está en la cabeza o al nodo cola, y así mantener
el orden tan bien como en una lista doblemente enlazada.

Las listas enlazadas simples y sus operaciones se puedes representar de la siguiente forma:
UNIVERSIDAD CATÓLICA DE COLOMBIA
FACULTAD DE INGENIERÍA Estructuras de datos
2011-1
PROGRAMA DE SISTEMAS

Realizar el programa en C++ que implemente una lista enlazada simple y utilice una clase Nodo con los
atributos dato de tipo entero y sig como puntero a la clase Nodo.

El programa debe mostrar el siguiente menú de opciones e implementarlas preferiblemente mediante


funciones (métodos):
UNIVERSIDAD CATÓLICA DE COLOMBIA
FACULTAD DE INGENIERÍA Estructuras de datos
2011-1
PROGRAMA DE SISTEMAS

"Digite 1 para insertar al inicio"

"Digite 2 para insertar al final"

"Digite 3 para insertar en el medio"

"Digite 4 para eliminar el primer elemento"

"Digite 5 para eliminar un elemento diferente al primero"

"Digite 6 para mostrar la lista"

"Digite 7 para mostrar el promedio de los elementos de la lista"

"Digite 8 para salir"

 Para la opción 2, tener en cuenta si la lista está vacía. En cuyo caso hay que reubicar la cabecera.
 Para la opción 2 se debe recorrer la lista hasta que el campo enlace del nodo sea NULL.
 Para las opciones 3 a la 7 se debe validar que la lista no esté vacía.
 Para las opciones 4 y 5 se debe validar que el elemento exista en la lista.
 La lista se considera vacía cuando la cabecera apunta a NULL.

Utilizar una variable de tipo puntero para llamar las funciones, tener en cuenta que algunas funciones
deberán retornar la cabecera de la lista.
UNIVERSIDAD CATÓLICA DE COLOMBIA
FACULTAD DE INGENIERÍA Estructuras de datos
2011-1
PROGRAMA DE SISTEMAS

Esqueleto del programa:

#include <iostream>

using namespace std;

class Nodo{

public:

Nodo* sig;

int dato;

};

int main ( ){

Nodo *e; //llamado de funciones

Nodo *cab=NULL; //cabecera de la lista

System(“pause”); //si se va a utilizar devc++

return 0;

Vous aimerez peut-être aussi