Liste

di il
4 risposte

Liste

Ho un problema di compilazione nella procedura per eliminare un nodo:
    
void pop (L&l,int x){
         x=l->num;
     	L p=l;			// salva il valore di  l
		l=l->next;		//aggiorna l
		delete p;
}
     
void print(L l){
   while (l!=0){
         cout<<l->num<<" ";
         l=l->next;
         }
   
}


bool erase(L& l, int &  x) {      

  
     int  value=x;  
     if(l->num==value) {
          pop(l,value); 
          return true;
           }
       else 
          return erase(l->next,x);
         
}   
  
ma mi da errore nell,ultima istruzione :
[Linker error] undefined reference to `erase(Record*&, int)'
ma se in- bool erase - passo l'intero x per valore compila, ma poi mi elimina sempre l'ultimo, e non l'elemento in un certo nodo

4 Risposte

  • Re: Liste

    Basta che utilizzi un puntatore *head che punta al primo elemento della lista.

    Poi con un altro puntatore *ptr lo associ ad head e hai un puntatore al primo elemento inserito da poter far scorrere su tutta la lista facendolo puntare di volta in volta al campo *p_next (ossia al puntatore al'elemento successivo)
  • Re: Liste

    Scusa tony, ma mi urge capire come risolvere quest'errore di linking
  • Re: Liste

    
    undefined reference to `erase(Record*&, int)'
    
    
    bool erase(L& l, int &  x)
    
    La definizione della funzione è per valore, lo sviluppo per riferimento. Per quello che il linker da errore.
  • Re: Liste

    Tutto ok !
Devi accedere o registrarti per scrivere nel forum
4 risposte