Eliminar elementos de una lista en C++ [117]
En este tutorial vamos a eliminar elementos de una lista en C++ siguiendo estos pasos:
- Validar que la lista no este vacia.
- Crear un nodo aux y anterior.
- Clonar la lista en aux.
- Ir recorriendo los elementos de la lista hasta encontrar el elemento.
- Si se encontró el elemento se borra
Codigo: https://github.com/programadornovato/c-/commit/d5c478d615e0ab3354e5e6a026b9eb8151d1fc4f
#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);
int main(){
int dato,numeroEliminar;
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);
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){
Nodo *actual=new Nodo();
actual=lista;
while (actual!=NULL)
{
std::cout<<"Valor del nodo es "<<actual->dato<<"\n";
actual=actual->siguiente;
}
}
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;
}
🎦 [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 >>