Está en la página 1de 3

/*

Marcial Alberto Aguilar Barahona #20172030270


Carlos Ivan Leiva Zelaya #20182031185
Juan David Hernandez #20162030631
ALGORITMOS Y ESTRUCTURAS DE DATOS - IS-310
*/
#include <iostream>

using namespace std;

class TNodo {
public:
int datos;
TNodo *enlace;
TNodo () {
datos = 0;
enlace = NULL;
}
};

class TLista {
public:
TNodo *primero;
TNodo *ultimo;
TLista() {
primero = NULL;
ultimo = NULL;
}

void agregarNodo(int _datos) {


TNodo *pNodo;
pNodo = new TNodo;
pNodo->datos = _datos;
if (primero == NULL) {
primero = pNodo;
} else {
ultimo->enlace = pNodo;
}
ultimo = pNodo;
}

void mostrarNodos(){
TNodo *pNodo, *pMostrar;
pNodo = primero;
while(pNodo) {
pMostrar = pNodo;
pNodo = pNodo->enlace;
cout << pMostrar->datos << endl;
}
}

void borrarPrimerNodo() {
TNodo *pNodo;
pNodo = new TNodo;
pNodo = primero;
primero = primero->enlace;
delete pNodo;
}
void borrarUltimoNodo() {
TNodo *pNodoActual;
TNodo *pNodoAnterior;
pNodoActual = new TNodo;
pNodoAnterior = new TNodo;
pNodoActual = primero;
while (pNodoActual->enlace) {
pNodoAnterior = pNodoActual;
pNodoActual = pNodoActual->enlace;
}
ultimo = pNodoAnterior;
pNodoAnterior->enlace = NULL;
delete pNodoActual;
}

void borrarNodoEnmedio() {
if (!primero) {
delete primero;
}
TNodo *rapido = primero;
TNodo *lento = primero;
TNodo *previo;
while (rapido->enlace) {
rapido = rapido->enlace->enlace;
previo = lento;
lento = lento->enlace;
}
previo->enlace = lento->enlace;
delete lento;
}

TNodo *buscarNodo(int dato) {


TNodo *pNodo;
pNodo = primero;
while (pNodo) {
if (pNodo->datos == dato) {
break;
}
pNodo = pNodo->enlace;
}
return pNodo;
}

~TLista() {
TNodo *pNodo, *pBorrar;
pNodo = primero;
while (pNodo){
pBorrar = pNodo;
pNodo = pNodo->enlace;
delete pBorrar;
}
}
};

int main() {
TLista lst1;
lst1.agregarNodo(7);
lst1.agregarNodo(6);
lst1.agregarNodo(5);
lst1.agregarNodo(6);
lst1.agregarNodo(7);
lst1.mostrarNodos();
cout << lst1.buscarNodo(5) << endl;
lst1.borrarNodoEnmedio();
lst1.borrarPrimerNodo();
lst1.borrarUltimoNodo();
cout << "**************\n";
lst1.mostrarNodos();
system("PAUSE");
}

También podría gustarte