Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: robertoesimez en 22 Marzo 2017, 20:31 PM

Título: Borrar ultimo nodo lista simplemente enlazada
Publicado por: robertoesimez en 22 Marzo 2017, 20:31 PM
Alguien me puede ayudar a borrar el ultimo nodo en mi lista simplemente enlazada, se lo agradecería mucho




Código (cpp) [Seleccionar]


#include <cstdlib>
#include <iostream>

using namespace std;

class FLORES{//Aquí hago mi clase y mis apuntadores del tipo de la clase
              private:
              FLORES *liga;
              FLORES *primero;
              FLORES *auxiliar;
              FLORES *nuevo;
             
              float precioventa;
             
              public:
              FLORES(){//Inicializo mis apuntadores en NULL
              primero=NULL;
              auxiliar=NULL;
              nuevo=NULL;
              }                 
              void ingresa_nodo();
              void mostrar_nodo();
              void borrar_nodo();                     
             
                };

void FLORES::ingresa_nodo(){//Mi función para ingresar nodos
                             
                             
                     system("cls");   
                     if(primero==NULL){
                    cout<<"ENTRO AQUI PORQUE NO HAY NODOS"<<endl;
                    nuevo= new (FLORES);
                    cout<<"Ingrese el precio de la flor"<<endl;
                    cin>>nuevo->precioventa;
                    primero= nuevo;
                    auxiliar= nuevo;
                    nuevo->liga=NULL;
                    }
                    else{
                    cout<<"ENTRO AQUI PORQUE  HAY NODOS"<<endl;     
                    nuevo=new (FLORES);
                    cin>> nuevo->precioventa;
                    auxiliar->liga= nuevo;   
                    auxiliar=nuevo;
                    nuevo->liga=NULL;
                    }
                    }
                   
                 

void FLORES::borrar_nodo(){// El problema XD
                            auxiliar=auxiliar->liga;
                            delete nuevo;
                            auxiliar->liga=NULL;
                            }
                       
                       
                       
                         
                             
void FLORES::mostrar_nodo(){//Mi función para mostrar nodo
                            auxiliar=primero;
                            while(auxiliar!=NULL){
                            cout<<"Precio:"<<auxiliar->precioventa<<endl;
                            auxiliar=auxiliar->liga;
                            }
                             system("PAUSE");               
                            }
                                     
                                                                   

int main(int argc, char *argv[])
{

FLORES obj;//Creo mi objeto

   
int opc;

do{//Menu
   system("cls");
   cout<<"\t"<<"\t"<<"\t"<<"MENU NODO"<<endl<<endl;
   cout<<"1. Ingresar nodo"<<endl;
   cout<<"2. Borrar nodo"<<endl;
   cout<<"3. Ver nodo"<<endl;
   cout<<"4. Salir"<<endl<<endl;
   cout<<"Elige tu opcion:"<<endl,   
   cin>> opc;       
switch (opc){ 
             case 1:
             obj.ingresa_nodo();     
             break;


            case 2:
            obj.borrar_nodo();     
            break;
     
           case 3:
            obj.mostrar_nodo();
            break; 
           
            case 4:
            break;       
   

 
   
}while(opc!=4);       
    system("PAUSE");
    return EXIT_SUCCESS;
}










Título: Re: Borrar ultimo nodo lista simplemente enlazada
Publicado por: Natalia94x en 22 Marzo 2017, 21:53 PM
Cita de: robertoesimez en 22 Marzo 2017, 20:31 PM
Alguien me puede ayudar a borrar el ultimo nodo en mi lista simplemente enlazada, se lo agradecería mucho




Código (cpp) [Seleccionar]



void FLORES::borrar_nodo(){// El problema XD

                           auxiliar=auxiliar->liga;
                           delete nuevo;
   auxiliar->liga=NULL;
                           }




Código (cpp) [Seleccionar]

  void FLORES::borrar_nodo(){// El problema XD

primero = NULL; // restablecer var

                           }


Este code restablece la variable a 0, espero que te sirva, SALUDOS!.
Título: Re: Borrar ultimo nodo lista simplemente enlazada
Publicado por: MAFUS en 22 Marzo 2017, 22:07 PM
A simple vista creo que la clase está mal planteada. Primero intenta realizar el trabajo sin clases, como si fuera C. Verás que sobran muchas cosas.
Título: Re: Borrar ultimo nodo lista simplemente enlazada
Publicado por: robertoesimez en 22 Marzo 2017, 22:16 PM
Las clases me las pidio el profesor si no, no me revisa mi programa
Título: Re: Borrar ultimo nodo lista simplemente enlazada
Publicado por: Natalia94x en 22 Marzo 2017, 23:24 PM
Cita de: robertoesimez en 22 Marzo 2017, 22:16 PM
Gracias, pero solo quiere me borre el ultimo nodo no toda la lista y con eso se me borra todo

AH no te había entendido  pero de todos modos arregla la clase, hay muchos errores en las vars, SALUDOS.
Título: Re: Borrar ultimo nodo lista simplemente enlazada
Publicado por: MAFUS en 23 Marzo 2017, 07:22 AM
No, robertoesimez, no lo digo por eso. La cosa es que empieces sin clases; solo structs, arrays y funciones. Así verás más claras claras las colas. Cuando funcione lo pasas a clase.