Foro de elhacker.net

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
  1.  
  2. #include <cstdlib>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. class FLORES{//Aquí hago mi clase y mis apuntadores del tipo de la clase
  8.              private:
  9.              FLORES *liga;
  10.              FLORES *primero;
  11.              FLORES *auxiliar;
  12.              FLORES *nuevo;
  13.  
  14.              float precioventa;
  15.  
  16.              public:
  17.              FLORES(){//Inicializo mis apuntadores en NULL
  18.              primero=NULL;
  19.              auxiliar=NULL;
  20.              nuevo=NULL;
  21.              }                
  22.              void ingresa_nodo();
  23.              void mostrar_nodo();
  24.              void borrar_nodo();                      
  25.  
  26.                };
  27.  
  28. void FLORES::ingresa_nodo(){//Mi función para ingresar nodos
  29.  
  30.  
  31.                     system("cls");    
  32.                     if(primero==NULL){
  33.                    cout<<"ENTRO AQUI PORQUE NO HAY NODOS"<<endl;
  34.                    nuevo= new (FLORES);
  35.                    cout<<"Ingrese el precio de la flor"<<endl;
  36.                    cin>>nuevo->precioventa;
  37.                    primero= nuevo;
  38.                    auxiliar= nuevo;
  39.                    nuevo->liga=NULL;
  40.                    }
  41.                    else{
  42.                    cout<<"ENTRO AQUI PORQUE  HAY NODOS"<<endl;    
  43.                    nuevo=new (FLORES);
  44.                    cin>> nuevo->precioventa;
  45.                    auxiliar->liga= nuevo;    
  46.                    auxiliar=nuevo;
  47.                    nuevo->liga=NULL;
  48.                    }
  49.                    }
  50.  
  51.  
  52.  
  53. void FLORES::borrar_nodo(){// El problema XD
  54.                            auxiliar=auxiliar->liga;
  55.                            delete nuevo;
  56.                            auxiliar->liga=NULL;
  57.                            }
  58.  
  59.  
  60.  
  61.  
  62.  
  63. void FLORES::mostrar_nodo(){//Mi función para mostrar nodo
  64.                            auxiliar=primero;
  65.                            while(auxiliar!=NULL){
  66.                            cout<<"Precio:"<<auxiliar->precioventa<<endl;
  67.                            auxiliar=auxiliar->liga;
  68.                            }
  69.                             system("PAUSE");              
  70.                            }
  71.  
  72.  
  73.  
  74. int main(int argc, char *argv[])
  75. {
  76.  
  77. FLORES obj;//Creo mi objeto
  78.  
  79.  
  80. int opc;
  81.  
  82. do{//Menu
  83.   system("cls");
  84.   cout<<"\t"<<"\t"<<"\t"<<"MENU NODO"<<endl<<endl;
  85.   cout<<"1. Ingresar nodo"<<endl;
  86.   cout<<"2. Borrar nodo"<<endl;
  87.   cout<<"3. Ver nodo"<<endl;
  88.   cout<<"4. Salir"<<endl<<endl;
  89.   cout<<"Elige tu opcion:"<<endl,    
  90.   cin>> opc;        
  91. switch (opc){  
  92.             case 1:
  93.             obj.ingresa_nodo();    
  94.             break;
  95.  
  96.  
  97.            case 2:
  98.            obj.borrar_nodo();    
  99.            break;
  100.  
  101.           case 3:
  102.            obj.mostrar_nodo();
  103.            break;  
  104.  
  105.            case 4:
  106.            break;        
  107.  
  108. }  
  109.  
  110.  
  111. }while(opc!=4);      
  112.    system("PAUSE");
  113.    return EXIT_SUCCESS;
  114. }
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  


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




Código
  1.  
  2.  
  3. void FLORES::borrar_nodo(){// El problema XD
  4.  
  5.                            auxiliar=auxiliar->liga;
  6.                            delete nuevo;
  7.    auxiliar->liga=NULL;
  8.                            }
  9.  
  10.  


Código
  1.   void FLORES::borrar_nodo(){// El problema XD
  2.  
  3. primero = NULL; // restablecer var
  4.  
  5.                            }
  6.  

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