[CURSO] C++ DE 0 A HEROE 馃Ω

117.-C++ desde cero 2019 [Eliminar elementos de una lista]

En este tutorial vamos a:

  • 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

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 .
Descargar zip con todos los codigos: http://raboninco.com/bXZK
[CURSO] C++ DE 0 A HEROE: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTofxs7iottRxJ5YPM7BOcc

Eugenio Chaparro

Entradas recientes

馃煝Editar c贸digo de un m贸dulo en Dolibarr [04]

馃煝Editar c贸digo de un m贸dulo en Dolibarr [04]

En este tutorial vamos editar el c贸digo de nuestro m贸dulo personas para poder personalizar algunas…

2 meses hace
馃煝Crear un sub_m贸dulo en Dolibarr [03]

馃煝Crear un sub_m贸dulo en Dolibarr [03]

En este tutorial vamos a crear un sub m贸dulo llamado seguridad que ser谩 muy parecido…

2 meses hace
馃煝Modificar un m贸dulo en Dolibarr [02]

馃煝Modificar un m贸dulo en Dolibarr [02]

En este tutorial aprenderemos a editar el objeto personas del modulo persona que creamos en…

2 meses hace
馃煝Constructor de m贸dulos en Dolibarr

馃煝Constructor de m贸dulos en Dolibarr

Como mencionamos anteriormente Dolibarr es un proyecto realizado sobre la base de una pol铆tica clara:…

2 meses hace
馃煝Tickets en Dolibarr [19]

馃煝Tickets en Dolibarr [19]

Los ticket en dolibarr nos ayudan a comunicar inconveniente en nuestros productos y servicios dentro…

2 meses hace
馃煝Agenda en Dolibarr [18]

馃煝Agenda en Dolibarr [18]

Las agendas en dolibarr nos ayudan a ver las actividades realizadas en proceso y por…

2 meses hace