0% encontró este documento útil (0 votos)
20 vistas6 páginas

Listas Simples

El documento presenta una implementación de una lista enlazada simple en C++. Incluye funciones para agregar, eliminar y mostrar nodos, así como un menú interactivo para que el usuario elija las operaciones a realizar. La clase 'ListaEnlazada' gestiona la memoria de los nodos para evitar fugas.

Cargado por

josuecordero0301
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas6 páginas

Listas Simples

El documento presenta una implementación de una lista enlazada simple en C++. Incluye funciones para agregar, eliminar y mostrar nodos, así como un menú interactivo para que el usuario elija las operaciones a realizar. La clase 'ListaEnlazada' gestiona la memoria de los nodos para evitar fugas.

Cargado por

josuecordero0301
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

#include <iostream>

#include <cstddef>
using namespace std;

// ------------------------- LISTA ENLAZADA SIMPLE -------------------------


struct Nodo {
int dato;
Nodo* siguiente;
Nodo(int dato) : dato(dato), siguiente(NULL) {}
};

class ListaEnlazada {
private:
Nodo* cabeza;

public:
ListaEnlazada() : cabeza(NULL) {}
int eleccion;

~ListaEnlazada() {
while (cabeza != NULL) {
Nodo* temp = cabeza;
cabeza = cabeza->siguiente;
delete temp;
}
}

void agregarAlFinal(int dato) {


Nodo* nuevoNodo = new Nodo(dato);
if (cabeza == NULL) {
cabeza = nuevoNodo;
} else {
Nodo* temp = cabeza;
while (temp->siguiente != NULL) {
temp = temp->siguiente;
}
temp->siguiente = nuevoNodo;
}
}

void eliminarNodo(int dato) {


if (cabeza == NULL) return;

if (cabeza->dato == dato) {
Nodo* temp = cabeza;
cabeza = cabeza->siguiente;
delete temp;
return;
}

Nodo* actual = cabeza;


while (actual->siguiente != NULL && actual->siguiente->dato != dato) {
actual = actual->siguiente;
}

if (actual->siguiente != NULL) {
Nodo* temp = actual->siguiente;
actual->siguiente = temp->siguiente;
delete temp;
}
}

void mostrar() {
Nodo* temp = cabeza;
cout<<"LA LISTA INGRESADA AL MOMENTO ES: \n";
while (temp != NULL) {
cout << temp->dato << " -> ";
temp = temp->siguiente;
}
cout << "NULL" << endl;
}

void escoger()
{
cout<<"OPCIONES QUE PUEDE ESCOGER \n";
cout<<"agregar=1; eliminar=2; mostrar=3; detener=4 \n";
cout<<"Que operacion desea realizar? ";
cin>>eleccion;
};

};

// ------------------------- PROGRAMA PRINCIPAL -------------------------


int main() {
cout << "======== Lista Enlazada Simple ========\n";
ListaEnlazada listaSimple;
listaSimple.escoger();

while(listaSimple.eleccion!=4)
{

if(listaSimple.eleccion>4)
{
return 0;
}

if(listaSimple.eleccion==1)
{
int nodo,cantidadnodos,contador=0;

cout<<"Cuantos nodos desea ingresar? ";


cin>>cantidadnodos;

while(contador<cantidadnodos)
{
cout<<"Ingresa el valor del nodo ";
cin>>nodo;
listaSimple.agregarAlFinal(nodo);
contador++;
}
cout<<"\n\n";
contador=0;
}

if(listaSimple.eleccion==2)
{
int nodoeliminado;
cout<<"Que valor dese eliminar? ";
cin>>nodoeliminado;
listaSimple.eliminarNodo(nodoeliminado);
}

if(listaSimple.eleccion==3)
{
cout<<"\n\n";
listaSimple.mostrar();

}
cout<<"\n\n";
listaSimple.escoger();
}

return 0;

//cout<<"\n\n";

/* cout<<"Ingresa el valor de la cabeza ";


cin>>nodo1;
listaSimple.agregarAlFinal(nodo1);

cout<<"Ingresa el valor de la cabeza ";


cin>>nodo1;
listaSimple.agregarAlFinal(nodo1);

listaSimple.agregarAlFinal(10);
listaSimple.agregarAlFinal(20);
listaSimple.agregarAlFinal(30);
cout << "Lista original: ";
listaSimple.mostrar(); // 10 -> 20 -> 30 -> NULL

listaSimple.eliminarNodo(20);
cout << "Despues de eliminar 20: ";
listaSimple.mostrar(); // 10 -> 30 -> NULL
*/

También podría gustarte