ListaDoble Implementacion de una lista doblemente enlazada
1.0
Loading...
Searching...
No Matches
Classes | Public Member Functions | List of all members
ListaDoble2< T > Class Template Reference

#include <ListaDoble2.hpp>

Classes

class  FueraRango
 Excepción lanzada cuando se intenta acceder a una posición fuera del rango de la lista. More...
 
class  ListaVacia
 Excepción lanzada cuando se realiza una operación en una lista vacía. More...
 

Public Member Functions

 ListaDoble2 ()
 Constructor por defecto.
 
 ~ListaDoble2 ()
 Destructor.
 
 ListaDoble2 (const ListaDoble2< T > &l)
 Constructor de copia.
 
ListaDoble2< T > & operator= (const ListaDoble2 &l)
 Operador de asignación.
 
void AgregarInicio (T valor)
 Agrega un elemento al inicio de la lista.
 
void AgregarFinal (T valor)
 Agrega un elemento al final de la lista.
 
void AgregarPos (T valor, int pos)
 Agrega un elemento en una posición específica de la lista.
 
void EliminarInicio ()
 Elimina el primer elemento de la lista.
 
void EliminarFinal ()
 Elimina el último elemento de la lista.
 
void EliminarPos (int pos)
 Elimina el elemento en una posición específica de la lista.
 
bool BuscarValor (T valor) const
 Busca un valor en la lista.
 
int BuscarPos (T valor) const
 Busca la posición de un valor en la lista.
 
bool EstaVacia () const
 Verifica si la lista está vacía.
 
ObtenerPrimero () const
 Obtiene el primer elemento de la lista.
 
ObtenerUltimo () const
 Obtiene el último elemento de la lista.
 
ObtenerPorPos (int pos) const
 Obtiene el elemento en una posición específica de la lista.
 
void ModificarPos (T valor, int pos)
 Modifica el valor del elemento en una posición específica de la lista.
 
int NumElementos () const
 Obtiene el número de elementos en la lista.
 
void Vaciar ()
 Vacía la lista, eliminando todos los elementos.
 
void Imprimir () const
 Imprime los elementos de la lista en orden.
 
void ImprimirReversa () const
 Imprime los elementos de la lista en orden inverso.
 
T & operator[] (int pos)
 Sobrecarga del operador [] para acceder a los elementos de la lista.
 
const T & operator[] (int pos) const
 Sobrecarga del operador [] constante para acceder a los elementos de la lista.
 
void Intercambiar (ListaDoble2< T > &lista)
 Intercambia el contenido de la lista con otra lista.
 
void TransferirRango (ListaDoble2< T > &otraLista, int posInicio, int posFin)
 Transfiere un rango de elementos desde otra lista a esta lista.
 
void TransferirTodos (ListaDoble2< T > &otraLista)
 Transfiere todos los elementos desde otra lista a esta lista.
 
void Concatenar (ListaDoble2< T > &otraLista)
 Concatena otra lista al final de esta lista.
 
void OrdenarBurbuja (bool ascendente=true)
 Ordena los elementos de la lista utilizando el algoritmo de ordenamiento burbuja.
 
void OrdenarInsercion (bool ascendente=true)
 Ordena los elementos de la lista utilizando el algoritmo de ordenamiento por inserción.
 
void OrdenarSeleccion (bool ascendente=true)
 Ordena los elementos de la lista utilizando el algoritmo de ordenamiento por selección.
 
void EliminarRepetidos ()
 Elimina todas las ocurrencias repetidas de elementos en la lista.
 
void TransferirDesde (ListaDoble2< T > &otraLista, int posInicio)
 Transfiere los elementos de otra lista a partir de una posición especificada.
 
void EliminarTodasOcurrencias (T valor)
 Elimina todas las ocurrencias de un valor específico en la lista.
 
void EliminarConCondicion (bool(*condicion)(T))
 Elimina los elementos que cumplen con una condición dada.
 
void OrdenarAscendente ()
 Ordena los elementos de la lista en orden ascendente.
 

Detailed Description

template<typename T>
class ListaDoble2< T >

Permite manipular una lista doblemente enlazada con una serie de operaciones como agregar elementos, eliminar elementos, buscar elementos, entre otras.

Template Parameters
TTipo de dato de los elementos almacenados en la lista.
Ejemplo.cpp
#include <iostream>
#include "ListaDoble2.hpp"
bool EsPar(int valor) {
return valor % 2 == 0;
}
int main() {
std::cout << "Lista vacia? " << (lista.EstaVacia() ? "Si" : "No") << std::endl;
std::cout << "Agregaremos elementos\n";
lista.AgregarFinal(10);
lista.AgregarFinal(20);
lista.AgregarFinal(30);
lista.AgregarInicio(5);
lista.AgregarInicio(2);
std::cout << "Elementos de la lista: ";
lista.Imprimir();
std::cout << std::endl;
std::cout << "Elementos de la lista (reversa): ";
lista.ImprimirReversa();
std::cout << std::endl;
// Modificar un elemento en la posición 2
lista.ModificarPos(15, 2);
std::cout << "Elementos de la lista despues de modificar el valor en la posicion 2: ";
lista.Imprimir();
std::cout << std::endl;
// Buscar un valor
int valorABuscar = 15;
std::cout << "¿El valor " << valorABuscar << " está en la lista? " << (lista.BuscarValor(valorABuscar) ? "Si" : "No") << std::endl;
// Obtener el primer elemento
std::cout << "Primer elemento de la lista: " << lista.ObtenerPrimero() << std::endl;
// Obtener el último elemento
std::cout << "Ultimo elemento de la lista: " << lista.ObtenerUltimo() << std::endl;
// Eliminar un elemento en la posición 3
lista.EliminarPos(3);
std::cout << "Elementos de la lista despues de eliminar el valor en la posicion 3: ";
lista.Imprimir();
std::cout << std::endl;
// Transferir elementos desde otra lista
ListaDoble2<int> otraLista;
otraLista.AgregarFinal(100);
otraLista.AgregarFinal(200);
otraLista.AgregarFinal(200);
otraLista.AgregarFinal(400);
otraLista.AgregarFinal(100);
otraLista.AgregarFinal(200);
otraLista.AgregarFinal(300);
otraLista.AgregarFinal(400);
lista.TransferirTodos(otraLista);
std::cout << "Elementos de la lista despues de transferir desde otra lista: ";
lista.Imprimir();
std::cout << std::endl;
// Eliminar todas las ocurrencias de un valor
std::cout << "Elementos de la lista despues de eliminar todas las ocurrencias de 100: ";
lista.Imprimir();
std::cout << std::endl;
// Ordenar la lista en orden ascendente
std::cout << "Elementos de la lista despues de ordenar en orden ascendente: ";
lista.Imprimir();
std::cout << std::endl;
// Eliminar elementos repetidos
std::cout << "Elementos de la lista despues de eliminar elementos repetidos: ";
lista.Imprimir();
std::cout << std::endl;
// Eliminar elementos según una condición
lista.EliminarConCondicion(EsPar);
std::cout << "Elementos de la lista despues de eliminar elementos pares: ";
lista.Imprimir();
std::cout << std::endl;
return 0;
}
Implementación de una lista doblemente enlazada.
Definition ListaDoble2.hpp:135
void ImprimirReversa() const
Imprime los elementos de la lista en orden inverso.
void EliminarPos(int pos)
Elimina el elemento en una posición específica de la lista.
T ObtenerUltimo() const
Obtiene el último elemento de la lista.
void OrdenarAscendente()
Ordena los elementos de la lista en orden ascendente.
void ModificarPos(T valor, int pos)
Modifica el valor del elemento en una posición específica de la lista.
void AgregarFinal(T valor)
Agrega un elemento al final de la lista.
void Imprimir() const
Imprime los elementos de la lista en orden.
void AgregarInicio(T valor)
Agrega un elemento al inicio de la lista.
bool EstaVacia() const
Verifica si la lista está vacía.
void EliminarConCondicion(bool(*condicion)(T))
Elimina los elementos que cumplen con una condición dada.
void EliminarTodasOcurrencias(T valor)
Elimina todas las ocurrencias de un valor específico en la lista.
void TransferirTodos(ListaDoble2< T > &otraLista)
Transfiere todos los elementos desde otra lista a esta lista.
void EliminarRepetidos()
Elimina todas las ocurrencias repetidas de elementos en la lista.
T ObtenerPrimero() const
Obtiene el primer elemento de la lista.
bool BuscarValor(T valor) const
Busca un valor en la lista.
Salida:
Lista vacia? Si
Agregaremos elementos
Elementos de la lista: 2, 5, 10, 20, 30,
Elementos de la lista (reversa): 30, 20, 10, 5, 2,
Elementos de la lista despues de modificar el valor en la posicion 2: 2, 5, 15, 20, 30,
┐El valor 15 estß en la lista? Si
Primer elemento de la lista: 2
Ultimo elemento de la lista: 30
Elementos de la lista despues de eliminar el valor en la posicion 3: 2, 5, 20, 30,
Elementos de la lista despues de transferir desde otra lista: 2, 5, 20, 30, 100, 200, 200, 400, 100, 200, 300, 400,
Elementos de la lista despues de eliminar todas las ocurrencias de 100: 2, 5, 20, 30, 100, 200, 200, 400, 200, 300, 400,
Elementos de la lista despues de ordenar en orden ascendente: 2, 5, 20, 30, 100, 200, 200, 200, 300, 400, 400,
Elementos de la lista despues de eliminar elementos repetidos: 2, 5, 20, 30, 100, 200, 300, 400,
Elementos de la lista despues de eliminar elementos pares: 5,

Constructor & Destructor Documentation

◆ ListaDoble2() [1/2]

template<typename T >
ListaDoble2< T >::ListaDoble2 ( )

Constructor por defecto.

Crea una lista doblemente enlazada vacía.

◆ ~ListaDoble2()

template<typename T >
ListaDoble2< T >::~ListaDoble2 ( )

Destructor.

Libera la memoria ocupada por la lista.

◆ ListaDoble2() [2/2]

template<typename T >
ListaDoble2< T >::ListaDoble2 ( const ListaDoble2< T > & l)

Constructor de copia.

Parameters
lLista a copiar.

Member Function Documentation

◆ AgregarFinal()

template<typename T >
void ListaDoble2< T >::AgregarFinal ( T valor)

Agrega un elemento al final de la lista.

Parameters
valorValor del elemento a agregar.

◆ AgregarInicio()

template<typename T >
void ListaDoble2< T >::AgregarInicio ( T valor)

Agrega un elemento al inicio de la lista.

Parameters
valorValor del elemento a agregar.

◆ AgregarPos()

template<typename T >
void ListaDoble2< T >::AgregarPos ( T valor,
int pos )

Agrega un elemento en una posición específica de la lista.

Parameters
valorValor del elemento a agregar.
posPosición en la que se agregará el elemento.
Exceptions
FueraRangosi la posición está fuera del rango de la lista.

◆ BuscarPos()

template<typename T >
int ListaDoble2< T >::BuscarPos ( T valor) const

Busca la posición de un valor en la lista.

Parameters
valorValor a buscar.
Returns
Posición del valor en la lista o NO_ENCONTRADO si no se encuentra.

◆ BuscarValor()

template<typename T >
bool ListaDoble2< T >::BuscarValor ( T valor) const

Busca un valor en la lista.

Parameters
valorValor a buscar.
Returns
true si el valor se encuentra en la lista, false en caso contrario.

◆ Concatenar()

template<typename T >
void ListaDoble2< T >::Concatenar ( ListaDoble2< T > & otraLista)

Concatena otra lista al final de esta lista.

Parameters
otraListaLista que se concatenará.

◆ EliminarConCondicion()

template<typename T >
void ListaDoble2< T >::EliminarConCondicion ( bool(*)(T) condicion)

Elimina los elementos que cumplen con una condición dada.

Este método elimina los elementos de la lista que cumplen con una condición dada, representada por una función de condición proporcionada como argumento. Los elementos restantes mantienen su orden original en la lista.

Parameters
condicionPuntero a una función que define la condición de eliminación. La función debe aceptar un valor de tipo T como argumento y devolver un valor booleano que indique si el elemento debe ser eliminado (true) o no (false).

◆ EliminarFinal()

template<typename T >
void ListaDoble2< T >::EliminarFinal ( )

Elimina el último elemento de la lista.

Exceptions
ListaVaciasi la lista está vacía.

◆ EliminarInicio()

template<typename T >
void ListaDoble2< T >::EliminarInicio ( )

Elimina el primer elemento de la lista.

Exceptions
ListaVaciasi la lista está vacía.

◆ EliminarPos()

template<typename T >
void ListaDoble2< T >::EliminarPos ( int pos)

Elimina el elemento en una posición específica de la lista.

Parameters
posPosición del elemento a eliminar.
Exceptions
FueraRangosi la posición está fuera del rango de la lista.

◆ EliminarRepetidos()

template<typename T >
void ListaDoble2< T >::EliminarRepetidos ( )

Elimina todas las ocurrencias repetidas de elementos en la lista.

Este método elimina todas las ocurrencias repetidas de elementos en la lista, manteniendo solo la primera ocurrencia de cada elemento y eliminando las ocurrencias adicionales. El orden de los elementos se conserva.

◆ EliminarTodasOcurrencias()

template<typename T >
void ListaDoble2< T >::EliminarTodasOcurrencias ( T valor)

Elimina todas las ocurrencias de un valor específico en la lista.

Este método elimina todas las ocurrencias de un valor específico en la lista. Después de la eliminación, los elementos restantes mantienen su orden original en la lista.

Parameters
valorEl valor que se eliminará de la lista.

◆ EstaVacia()

template<typename T >
bool ListaDoble2< T >::EstaVacia ( ) const

Verifica si la lista está vacía.

Returns
true si la lista está vacía, false en caso contrario.

◆ Intercambiar()

template<typename T >
void ListaDoble2< T >::Intercambiar ( ListaDoble2< T > & lista)

Intercambia el contenido de la lista con otra lista.

Parameters
listaLista con la que se intercambiará el contenido.

◆ ModificarPos()

template<typename T >
void ListaDoble2< T >::ModificarPos ( T valor,
int pos )

Modifica el valor del elemento en una posición específica de la lista.

Parameters
valorNuevo valor a asignar al elemento.
posPosición del elemento a modificar.
Exceptions
FueraRangosi la posición está fuera del rango de la lista.

◆ NumElementos()

template<typename T >
int ListaDoble2< T >::NumElementos ( ) const

Obtiene el número de elementos en la lista.

Returns
Número de elementos en la lista.

◆ ObtenerPorPos()

template<typename T >
T ListaDoble2< T >::ObtenerPorPos ( int pos) const

Obtiene el elemento en una posición específica de la lista.

Parameters
posPosición del elemento a obtener.
Returns
Valor del elemento en la posición indicada.
Exceptions
FueraRangosi la posición está fuera del rango de la lista.

◆ ObtenerPrimero()

template<typename T >
T ListaDoble2< T >::ObtenerPrimero ( ) const

Obtiene el primer elemento de la lista.

Returns
Valor del primer elemento.
Exceptions
ListaVaciasi la lista está vacía.

◆ ObtenerUltimo()

template<typename T >
T ListaDoble2< T >::ObtenerUltimo ( ) const

Obtiene el último elemento de la lista.

Returns
Valor del último elemento.
Exceptions
ListaVaciasi la lista está vacía.

◆ operator=()

template<typename T >
ListaDoble2< T > & ListaDoble2< T >::operator= ( const ListaDoble2< T > & l)

Operador de asignación.

Asigna el contenido de una lista a otra.

Parameters
lLista a asignar.
Returns
Referencia a la lista actual.

◆ operator[]() [1/2]

template<typename T >
T & ListaDoble2< T >::operator[] ( int pos)

Sobrecarga del operador [] para acceder a los elementos de la lista.

Parameters
posPosición del elemento a acceder.
Returns
Referencia al elemento en la posición indicada.
Exceptions
FueraRangosi la posición está fuera del rango de la lista.

◆ operator[]() [2/2]

template<typename T >
const T & ListaDoble2< T >::operator[] ( int pos) const

Sobrecarga del operador [] constante para acceder a los elementos de la lista.

Parameters
posPosición del elemento a acceder.
Returns
Referencia constante al elemento en la posición indicada.
Exceptions
FueraRangosi la posición está fuera del rango de la lista.

◆ OrdenarAscendente()

template<typename T >
void ListaDoble2< T >::OrdenarAscendente ( )

Ordena los elementos de la lista en orden ascendente.

Este método ordena los elementos de la lista en orden ascendente utilizando un algoritmo de ordenamiento adecuado.

◆ OrdenarBurbuja()

template<typename T >
void ListaDoble2< T >::OrdenarBurbuja ( bool ascendente = true)

Ordena los elementos de la lista utilizando el algoritmo de ordenamiento burbuja.

Parameters
ascendentetrue para ordenar en orden ascendente, false para ordenar en orden descendente.

◆ OrdenarInsercion()

template<typename T >
void ListaDoble2< T >::OrdenarInsercion ( bool ascendente = true)

Ordena los elementos de la lista utilizando el algoritmo de ordenamiento por inserción.

Parameters
ascendentetrue para ordenar en orden ascendente, false para ordenar en orden descendente.

◆ OrdenarSeleccion()

template<typename T >
void ListaDoble2< T >::OrdenarSeleccion ( bool ascendente = true)

Ordena los elementos de la lista utilizando el algoritmo de ordenamiento por selección.

Parameters
ascendentetrue para ordenar en orden ascendente, false para ordenar en orden descendente.

◆ TransferirDesde()

template<typename T >
void ListaDoble2< T >::TransferirDesde ( ListaDoble2< T > & otraLista,
int posInicio )

Transfiere los elementos de otra lista a partir de una posición especificada.

Este método transfiere todos los elementos de otra lista a partir de una posición especificada, insertándolos al final de esta lista. La lista original se vacía después de la transferencia. Si la posición especificada está fuera de rango en la lista original, se lanzará una excepción.

Parameters
otraListaLa lista desde la cual se transferirán los elementos.
posInicioLa posición desde la cual se comenzarán a transferir los elementos en la lista original.
Exceptions
FueraRangoSi la posición especificada está fuera de rango en la lista original.

Transfiere los elementos de otra lista a partir de una posición especificada.

Este método transfiere todos los elementos de otra lista a partir de una posición especificada, insertándolos al final de esta lista. La lista original se vacía después de la transferencia. Si la posición especificada está fuera de rango en la lista original, se lanzará una excepción.

Parameters
otraListaLa lista desde la cual se transferirán los elementos.
posInicioLa posición desde la cual se comenzarán a transferir los elementos en la lista original.
Exceptions
FueraRangoSi la posición especificada está fuera de rango en la lista original.

◆ TransferirRango()

template<typename T >
void ListaDoble2< T >::TransferirRango ( ListaDoble2< T > & otraLista,
int posInicio,
int posFin )

Transfiere un rango de elementos desde otra lista a esta lista.

Parameters
otraListaLista desde la cual se transferirán los elementos.
posInicioPosición de inicio del rango de elementos a transferir.
posFinPosición final del rango de elementos a transferir.
Exceptions
FueraRangosi las posiciones están fuera del rango de la lista original.

◆ TransferirTodos()

template<typename T >
void ListaDoble2< T >::TransferirTodos ( ListaDoble2< T > & otraLista)

Transfiere todos los elementos desde otra lista a esta lista.

Parameters
otraListaLista desde la cual se transferirán los elementos.

The documentation for this class was generated from the following file: