UNIVERSIDAD DE COSTA RICA
ESCUELA DE LAS CIENCIAS DE
PROGRAMACIÓN II (CI-1201)
CENTRO UNIVERSITARIO:
LISTAS
ENLAZADAS
PROFESOR:
ADOLFO
DI MARE
07/09/2005
Tabla de contenidos
Descripción
del problema a resolver
Especificación de los métodos:
El programa está diseñado para agregar
números e ir guardándolos en una lista enlazada, para luego verlos o
simplemente borrarlos sin perder la referencia de los demás.
Una vez dominado el tema de listas se
podrá manipular otro tipo de datos como registro de empleados, estudiantes,
vehículos, etc.; con sus respectivas características para a la hora de hacer
una búsqueda se puedan hallar datos con mayor facilidad.
La parte del trabajo a la que se le debe
dar énfasis es la implementación de los métodos, sin embargo no se debe dejar
de lado la parte del análisis y la documentación, tanto interna como externa
del trabajo. Aunque no pareciera, una
buena documentación facilitará mucho la reutilización de código, lo cual es muy
útil y abaratará los costos de mantenimiento.
Los documentos de este trabajo, se pueden
encontrar en: www.angelfire.com/cantina/colossus
y en: www.angelfire.com/rock4/a43354
Tomar
un tiempo para comprender la forma en que funcionan las listas para poder
implementar dos métodos que ayuden a insertar y eliminar nuevos datos.
La solución para esto sería tomar en cuenta
las especificaciones dadas por el programador en los comentarios.
Comprender la forma en que trabajan las listas.
Comenzar a usar nodos unidos por medio de enlaces a
apuntadores.
Trabajar de forma modularizada.
Practicar el uso de doxygen.
El programa requiere tener una plataforma
de win32 valida con cualquier sistema operativo de Microsoft Windows; además de
que requiere la existencia de los sub-directorios que se deseen ordenar.
Verificar que el método de
insertar un nuevo dato, el cual ha sido implementado por el profesor, esta bien hecho, en caso contrario corregir errores, además
implementar por completo el método de eliminar.
En
el método de insert:
Este método estaba implementado y sólo
verificamos su funcionalidad.
Método remove:
Su función es buscar el valor que el usuario
desee eliminar de la lista. Luego hace
que el nodo que apunta al valor deje de hacerlo
y apunte al nodo siguiente al valor.
/// Inserta un nuevo número al final de la
lista
void list :: insert (list
:: iterator p, const T& v)
/// Elimina los números que
se deseen, en caso de que se repitan varias veces busca uno a uno hasta
eliminarlos a todos.
void list :: remove (const
T& v)
El main() se encuentra dentro de el archivo USE_list.cpp,
Crea
dos objetos de tipo lista, en los cuales se almacenarán los valores insertados,
posteriormente hace llamado al método printList
que se encarga de mostrar en pantalla el estado de la lista después de que el
mismo main ejecute los push_front y push_back que se mencionan.
Al final imprime el último estado de la lista.
Este programa tiene un alto grado de
eficiencia debido al uso de referencias para la manipulación de los datos.
NULL
+-----+---+ +-----+---+
+-----+---+
L.m_first-->| v_1 |
*-|-->| v_2 | *-|-->| v_3 | 0 |
+-----+---+ +-----+---+ +-----+---+
m_val next /\
||
last_node(L)
El compilador utilizado fue Microsoft Visual C++ 7.0
La presentación del trabajo permite que
el estudiante simplemente abra el proyecto que se encuentra en el archivo .ZIP
y el Visual C++ carga los archivos necesarios para la compilación y ejecución
del programa.
Guía de uso del programa
El programa no necesita
guía de uso porque no hace falta que el usuario interactúe con el software.
Conclusiones
A partir de los conocimientos adquiridos
concluimos que el uso de listas es de gran ayuda en programas de más
complejidad debido a la posibilidad que dan de organizar objetos. El uso de los punteros abre toda una nueva
gama de posibilidades para los programadores en C++, aunque no cabe duda de que
quienes deseen trabajarlos con naturalidad requieren de una mayor experiencia.
La
programación orientada a objetos que implementó Stroustrup en C++, lo hace más
cómodo para trabajar, pero el lenguaje aún extraña el recolector de basura que
JAVA posee. ¿Qué tan difícil será implementarlo? Parece que esa parte nos
tocará a nosotros.
-
Deitel Harvey M., Deitel Paul J. Como programar en C++. Segunda Edición. Pearson Educación, México,
2003.