Lista enlazada simple

Share Embed Donate


Short Description

Download Lista enlazada simple...

Description

Estructuras de datos: Listas enlazada simple

UNIVERSIDAD CATÓLICA DE COLOMBIA FACULTAD DE INGENIERÍA PROGRAMA DE SISTEMAS

Estructuras de datos

2011-1

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 PROGRAMA DE SISTEMAS

Estructuras de datos

2011-1

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 PROGRAMA DE SISTEMAS

Estructuras de datos

2011-1

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 PROGRAMA DE SISTEMAS

Estructuras de datos

2011-1

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 PROGRAMA DE SISTEMAS

Estructuras de datos

2011-1

"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 l ista.

UNIVERSIDAD CATÓLICA DE COLOMBIA FACULTAD DE INGENIERÍA PROGRAMA DE SISTEMAS

Esqueleto del programa:

#include 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;

}

Estructuras de datos

2011-1

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF