Data Structures

Práctica #9: LinkedList

Objetivo

Durante esta actividad, los alumnos serán capaces de:


Descripción

A partir del código de la clase LinkedList<T> (lista circular doblemente encadenada) elaborado durante las sesiones de clase, añade los métodos que se describen a continuación. Antes de la definición de cada método debes incluir un comentario que indique su correspondiente complejidad de tiempo.

Método Descripción
bool is_empty() const Regresa true si esta lista está vacía, o false en caso contrario.
bool contains(T data) const Regresa true si data es un elemento contenido en esta lista, o false en caso contrario.
T get(int index) const Regresa el elemento contenido en el índice especificado de esta lista. El primer elemento está en el índice 0. Lanza una excepción std::out_of_range si index está fuera de rango (es menor a 0 o mayor o igual al número de elementos de la lista).
T remove_front() Remueve y devuelve el elemento de la parte frontal de esta lista. Lanza una excepción std::length_error si la lista está vacía.
T remove_back() Remueve y devuelve el elemento de la parte de atrás de esta lista. Lanza una excepción std::length_error si la lista está vacía.
void extend(
    const LinkedList<T>&
    other
)
Añade al final de esta lista todos los elementos contenidos en la lista other.

Modifica el archivo linked_list_test.cpp para probar todos los nuevos métodos. Corre también el programa usando valgrind para verificar que no haya problemas en el uso de memoria.

¿Qué se debe entregar?

Coloca en un comentario en la parte superior de cada archivo fuente (linked_list.h y linked_list_test.cpp) la información personal de los autores (matrícula y nombre). Coloca ambos archivos en un archivo ZIP llamado practica9.zip y entrégalo como se indica a continuación.

Upload Instructions

To deliver the practica9.zip file, please provide the following information:

Request PIN

Solo es necesario que lo entregue un miembro del equipo.