Borrar ultimo nodo lista simplemente enlazada

Iniciado por robertoesimez, 22 Marzo 2017, 20:31 PM

0 Miembros y 1 Visitante están viendo este tema.

robertoesimez

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;
}











Natalia94x

#1
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!.

MAFUS

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.

robertoesimez

Las clases me las pidio el profesor si no, no me revisa mi programa

Natalia94x

#4
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.

MAFUS

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.