Programación III , Guía 4 1 Facultad : Ingeniería Escuela : Computación Asignatura: Programación III Tema: “LISTAS ENLAZADAS”. Objetivo • Aprenda a formar estructuras de datos enlazadas. • Implemente una lista utilizando Visual C#. NET. Introducción LISTA Una lista está formada por una serie de elementos llamados nodos los cuales son objetos que contiene como variable miembro un puntero asignado y variables de cualquier tipo para manejar datos. El puntero sirve para enlazar cada nodo con el resto de nodos que conforman la lista. De esto podemos deducir que una lista enlazada (lista) es una secuencia de nodos en el que cada nodo esta enlazado o conectado con el siguiente (por medio del puntero mencionado anteriormente). El primer nodo de la lista se denomina cabeza de la lista y el último nodo cola de la lista. Este último nodo suele tener su puntero igualado a NULL Para indicar que es el fin de la lista. La lista enlazada es una estructura de datos dinámica cuyos nodos suelen ser normalmente registros y que tienen un tamaño fijo. Ahora bien suelen llamarse estructuras dinámicas porque se crean y destruyen según se vayan necesitando. De este modo se solicita o libera memoria en tiempo de ejecución del programa. Gráficamente una Lista puede representarse de la siguiente manera: Programación III , Guía 4 2 Las operaciones típicas de la lista incluyen: Crear la lista, verificar si está vacía, insertar elementos, eliminar elementos, mostrar elementos. Materiales y equipo • • • Guía de Laboratorio Nº 4. Computadora con programa: o Microsoft Visual Studio 2012. Dispositivo de Almacenamiento (USB). Procedimiento 1-Cree un proyecto modo consola en Visual C#.Net y agregue el siguiente código dentro de la clase program (antes del main). //se crea la clase nodo class nodo { public int info; public nodo sgte; } //se crea la clase lista class lista { public nodo inicio; public lista() { inicio = null; } //Función insertar final de la lista public void Insertarf(int item) { nodo aux = new nodo(); aux.info = item; aux.sgte = null; if (inicio == null) inicio = aux; else { nodo puntero; puntero = inicio; while (puntero.sgte != null) { puntero = puntero.sgte; } puntero.sgte = aux; } } //Función insertar Inicio de la lista public void InsertarI(int item) { nodo aux = new nodo(); Programación III , Guía 4 3 aux.info = item; aux.sgte = null; if (inicio == null) inicio = aux; else { nodo puntero; puntero = inicio; inicio = aux; aux.sgte = puntero; } } //Función Eliminar inicio de la lista public void eliminarI() { if (inicio == null) Console.WriteLine("Lista vacía, no se puede eliminar"); else inicio = inicio.sgte; } //Función Eliminar final de la lista public void eliminarF() { if (inicio == null) Console.WriteLine("Lista vacía, no se puede eliminar"); else if (inicio.sgte == null) inicio = null; else { nodo punteroant, punteronext; punteroant = inicio; punteronext = inicio; while (punteronext.sgte != null) { punteroant = punteronext; punteronext = punteronext.sgte; } punteroant.sgte = null; } } //Insertar en una posición especifica de la lista public void InsertarP(int item, int pos) { nodo aux = new nodo(); aux.info = item; aux.sgte = null; if (inicio == null) { Console.WriteLine(" LISTA VACIA,SE INSERTA EN LA 1ºPOSICION"); inicio = aux; } else { nodo puntero; puntero = inicio; if (pos == 1) Programación III , Guía 4 4 { inicio = aux; aux.sgte = puntero; } else { for (int i = 1; i < pos - 1; i++) { puntero = puntero.sgte; if (puntero.sgte == null) break; } nodo punteronext; punteronext = puntero.sgte; puntero.sgte = aux; aux.sgte = punteronext; } } } //Función que muestra el contenido de la lista public void Mostrar() { if (inicio == null) Console.WriteLine("lista vacia"); else { nodo puntero; puntero = inicio; Console.Write("{0}->\t", puntero.info); while (puntero.sgte != null) { puntero = puntero.sgte; Console.Write("{0}->\t", puntero.info); } Console.WriteLine(); } } Ahora dentro del Main digitaremos lo siguiente: static void Main(string[] args) { //crear una instancia de la lista lista milista = new lista(); milista.Insertarf(10); milista.Insertarf(20); milista.Insertarf(30); milista.Insertarf(40); milista.Mostrar(); Console.ReadLine(); Programación III , Guía 4 5 } Ahora ejecute el código trabajado y observe lo que realiza el programa. Una vez que ha realizado esto agregue las siguientes líneas a su código del Main: //insertamos en la posicion 2 el valor 220 milista.InsertarP(220, 2); milista.Mostrar(); Console.ReadLine() Ejecútelo y observe qué resultados muestra. Análisis de resultados 2- Basándose en el código dado, elabore un menú con las siguientes opciones: a. Insertar al Frente b. Insertar al Final c. Insertar en una posición especifica d. Eliminar al Frente e. Eliminar al Final f. Mostrar lista g. Salir Investigación complementaria. Crear una función booleana que permita buscar información en una lista enlazada, utilice la forma más sencilla del nodo solo el int info. Implementar una lista doblemente enlazada con C#, apoyándose en el código visto en la práctica. Bibliografía. Deitel, Harvey M.; Deitel, Paul J. CÓMO PROGRAMAR EN C#. Segunda Edición. Editoral Pearson. México, 2007. Programación III , Guía 4 6 Hoja de cotejo: 4 Guía 4: Listas Enlazadas. Alumno: Máquina No: Docente: GL: Fecha: EVALUACION % CONOCIMIENTO 40 APLICACIÓN DEL CONOCIMIENTO 40 ACTITUD 20 TOTAL 100% 1-4 5-7 8-10 Nota