Objetivo Introducción

Anuncio
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
Descargar