Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 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;
}
~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");
}