Data Structures

Práctica #2: Listas encadenadas

Objetivo

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


Descripción

Esta actividad se debe realizar y entregar por equipos.

NOTA: Los archivos necesarios para comenzar esta práctica están disponibles en el repositorio de GitHub del curso.

A partir del código del archivo linkedlist.h elaborado durante las sesiones de clase, añade las funciones miembro que se describen a continuación.

IMPORTANTE: Antes de la definición de cada operación debes incluir un comentario que indique su correspondiente complejidad de tiempo.

Operación Descripción
LinkedList() Constructor. Crea una lista vacía.
LinkedList(
    std::initializer_list<T>
        args
)
Constructor. Crea una lista inicializada con los elementos contenidos en args.
~LinkedList() Destructor. Se encarga de liberar toda la memoria dinámica ocupada por esta lista.
bool contains(T value) const Función miembro. Devuelve true si value es un elemento contenido en esta lista, o false en caso contrario.
void extend(
    const LinkedList<T>&
        other
)
Función miembro. Añade al final de esta lista todos los elementos contenidos en other.
T get(int index) const Función miembro. Devuelve 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).
void insert_at(
    int index,
    T value
)
Función miembro. Inserta value en la posición index. Esta función es equivalente a insert_front cuando index es igual a 0. De manera similar, esta función es equivalente a insert_back cuando index es igual al número de elementos de esta lista. Lanza una excepción std::out_of_range si index está fuera de rango (es menor a 0 o mayor al número de elementos de la lista).
void insert_back(T value) Función miembro. Inserta value en la parte posterior de esta lista.
void insert_front(T value) Función miembro. Inserta value en la parte frontal de esta lista.
bool is_empty() const Función miembro. Devuelve true si esta lista está vacía, o false en caso contrario.
T remove_at(int index) Función miembro. Remueve y devuelve el elemento en la posición index. Esta función es equivalente a remove_front cuando index es igual a 0. De manera similar, esta función es equivalente a remove_back cuando index es igual al número de elementos de esta lista menos uno. 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_back() Función miembro. Remueve y devuelve el elemento de la parte posterior de esta lista. Lanza una excepción std::length_error si la lista está vacía.
T remove_front() Función miembro. 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.
int size() const Función miembro. Devuelve el número de elementos contenidos en esta lista.
std::string to_string() const Función miembro. Devuelve la representación de esta lista como una cadena de caracteres de la forma:
"[elem1, elem2, elem3, ...]"

Prueba tu código utilizando las pruebas contenidas en el archivo tests.cpp (contiene 125 aserciones en total). Así mismo, corre el código usando valgrind para verificar que no existan fugas de memoria.

¿Qué se debe entregar?

Coloca en un comentario en la parte superior del archivo fuente linkedlist.h la información personal de los autores (matrícula y nombre), por ejemplo:

/*----------------------------------------------------------
 * Práctica #2: Listas encadenadas
 * Implementación de la clase LinkedList.
 *
 * Fecha: 10-Sep-2021
 * Autores:
 *           A01770771 Sylvie Laufeydottir
 *           A01777771 Loki Laufeyson
 *----------------------------------------------------------*/

Upload Instructions

To deliver the linkedlist.h file, please provide the following information:

Request PIN

Solo es necesario que lo entregue un miembro del equipo.

La fecha límite es el viernes 1 de octubre.