Eliminar una la lista en C++ [118]
En este tutorial vamos a eliminar una la lista en C++ siguiendo estos pasos:
- Validar que la lista no este vacia.
- Crear un nodo aux en el que se va a clonar la lista.
- Apuntar al siguiente nodo de la lista con ayuda de aux.
- Borrar aux.
Codigo: https://github.com/programadornovato/c-/commit/476adbf896e63a3865b18661fe578a3fb3524b4c
#include <iostream> struct Nodo { int dato; Nodo *siguiente; }; void insertarNodoLista(Nodo *&lista,int dato); void mostrarNodoLista(Nodo *&lista); bool buscarNodoLista(Nodo *&lista,int buscar); bool eliminarNodoLista(Nodo *&lista,int numeroBorrar); void borrarLista(Nodo *&lista,int &numero); int main(){ int dato,numeroEliminar,numeroEliminado; char respuesta; Nodo *lista=NULL; regresar: std::cout<<"Ingresa un dato en la lista: "; std::cin>>dato; insertarNodoLista(lista,dato); std::cout<<"Deseas insertar otro dato (s/n):"; std::cin>>respuesta; if(respuesta=='s' || respuesta=='S'){ goto regresar; } mostrarNodoLista(lista); /* std::cout<<"Numero a buscar: "; std::cin>>dato; if(buscarNodoLista(lista,dato)==true){ std::cout<<"El valor "<<dato<<" si esta en la lista\n"; } else{ std::cout<<"El valor "<<dato<<" no esta en la lista\n"; } */ /* std::cout<<"Numero a eliminar:"; std::cin>>numeroEliminar; if(eliminarNodoLista(lista,numeroEliminar)==true){ std::cout<<"El numero "<<numeroEliminar<<" ha sido eliminado de la lista\n"; }else{ std::cout<<"El numero "<<numeroEliminar<<" no ha sido encontrado\n"; } mostrarNodoLista(lista); */ while (lista!=NULL) { borrarLista(lista,numeroEliminado); std::cout<<"Se elimino "<<numeroEliminado<<"\n"; } mostrarNodoLista(lista); system("pause"); return 0; } void insertarNodoLista(Nodo *&lista,int dato){ Nodo *nuevoNodo=new Nodo(); nuevoNodo->dato=dato; Nodo *aux1=lista; Nodo *aux2; while ( (aux1!=NULL) && (aux1->dato<dato) ){ aux2=aux1; aux1=aux1->siguiente; } if(lista==aux1){ lista=nuevoNodo; nuevoNodo->siguiente=aux1; }else{ aux2->siguiente=nuevoNodo; nuevoNodo->siguiente=aux1; } std::cout<<"El dato "<<dato<<" se ha insertado\n"; } void mostrarNodoLista(Nodo *&lista){ if(lista!=NULL){ Nodo *actual=new Nodo(); actual=lista; while (actual!=NULL) { std::cout<<"Valor del nodo es "<<actual->dato<<"\n"; actual=actual->siguiente; } } else{ std::cout<<"Esta lista esta vacia\n"; } } bool buscarNodoLista(Nodo *&lista,int buscar){ bool encontrado=false; Nodo *actual=new Nodo(); actual=lista; while ( (actual!=NULL) && (actual->dato<=buscar) ) { if(actual->dato==buscar){ encontrado=true; } actual=actual->siguiente; } return encontrado; } bool eliminarNodoLista(Nodo *&lista,int numeroBorrar){ bool encontrado=false; if(lista!=NULL){ Nodo *aux=lista,*anterior=NULL; while ( (aux!=NULL) && (aux->dato!=numeroBorrar) ){ anterior=aux; aux=aux->siguiente; } if(aux==NULL){ encontrado=false; }else if(anterior==NULL){ lista=lista->siguiente; delete aux; encontrado=true; }else{ anterior->siguiente=aux->siguiente; delete aux; encontrado=true; } } return encontrado; } void borrarLista(Nodo *&lista,int &numero){ if(lista!=NULL){ Nodo *aux=lista; numero=aux->dato; lista=aux->siguiente; delete aux; } }
🎦 [Curso] Visual Studio Code 🆚 de 0 a 100: https://www.youtube.com/playlist?list=PLCTD_CpMeEKQbdlT8efsS-veXuvYZ1UWn
📦 Descargar zip con todos los codigos: http://raboninco.com/bXZK
🎦 [CURSO] C++ DE 0 A HEROE: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTofxs7iottRxJ5YPM7BOcc
🎦 [Curso] Visual Studio Code 🆚 de 0 a 100: https://www.youtube.com/playlist?list=PLCTD_CpMeEKQbdlT8efsS-veXuvYZ1UWn
Gracias por apoyar este canal: https://www.patreon.com/programadornovato
🔗 Facebook: https://facebook.com/ProgramadorNovatoOficial
🔗 Twitter: https://twitter.com/programadornova
🔗 Linkedin: https://www.linkedin.com/in/programadornovato/
🔗 Instagram: https://www.instagram.com/programadornovato/
🔗 Pagina oficial: https://www.programadornovato.com
<<Anterior tutorial Siguiente tutorial >>