Lista semplice

di il
16 risposte

16 Risposte - Pagina 2

  • Re: Lista semplice

    Ma è la stessa cosa di come ho provato poco fa(al posto di m_pHead c'è prec), scrivimi esattamente il pezzo con cui devo sostituire perchè forse non ho capito..
  • Re: Lista semplice

    Beh, non è la stessa cosa perché m_pHead è inteso come variabile membro privata e pertanto globale (== visibile) tra tutti i metodi, pensavo fosse esplicito perché l'ho scritta utilizzando la notazione: m_(eccetera).
    Ma l'ho impiegata solo per rendere chiaro che la testa della lista deve essere visibile e condivisa all'interno di ogni metodo. ...ad esempio anche utilizzando il puntatore "testa" proprio come fai nella funzione inserisci_in_testa, allora salta fuori una cosa simile:
    bool DeleteOneNode(nodo *& testa, size_t val)
    {
    	/*	Elimina un solo e unico nodo.
    	 *
    	 *		size_t val		nodo per valore da eliminare.
    	 *
    	 *	Return value
    	 *		true 	se un nodo è stato eliminato, 
    	 *		false 	se il nodo non è stato trovato.
    	 */
    
    	nodo *P = testa;
    	nodo *prec = nullptr;
    
    	if( !P ) // Lista vuota.
    		return false;
    
    	if( P->val == i ) // Se è il primo nodo:
    	{
    		testa = P->ptr;		// imposta il nodo sucessivo come nuova testa della lista;
    		delete P;			// libera il primo elemento.
    		// P = testa;		// Inutile in tal caso perché termina con il ritorno di true.
    
    		return true;
    	}
    
    	while( P ) // Non è il primo nodo:
    	{
    		if( P->val == i )
    		{
    		 	// Sicuramente ha saltato il primo ciclo e pertanto 'prec' non può essere nullo.
    			prec->ptr = P->ptr;		// Collega il nodo precedente al sucessivo.
    			delete P;				// Libera il nodo corrente.
    
    			return true;
    		}
    
    		prec = P;
    		P = P->ptr;
    	}
    
    	return false;
    }
    Mi esprimo nei commenti al codice di questa funzione DeleteOneNode che adopero a titolo di esempio e in cui noterai che ho voluto semplificare il codice. Prova ad adattarla alle tue esigenze e fammi sapere.
Devi accedere o registrarti per scrivere nel forum
16 risposte