Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154

    [C] Rimuovere elemento da una lista

    Ciao a tutti,
    ho un problema a rimuovere elementi da un lista. Spero qualcuno possa chiarirmi le idee
    Mi sono dichiarato la seguente struct:
    codice:
    struct pippo
    {
         int i;
         struct pippo *next; // punta al prossimo elemento
    };
    
    typedef struct pippo Pippo;
    Mi sono poi dichiarato il seguente array di 3 elementi che sono puntatori a struct tipo Pippo:
    codice:
    Pippo *array[3];
    Ho una funzione che aggiunge correttamente (testata) elementi nella lista, per es. creo una lista di 3 elementi con root array[0].
    E' corretta la seguente funzione per rimuovere il primo elemento della lista?
    codice:
    Pippo *eliminaPrimo (Pippo *elem) //elimina il primo elemento della lista???
    {
    	Pippo *aux;
    
    	aux = elem;
    	elem = elem->next;
    	aux->next = NULL;
    	free (aux);
    	return elem;
    }
    Ringrazio anticipatamente

  2. #2
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119

    Re: [C] Rimuovere elemento da una lista

    Originariamente inviato da Alcott
    Ringrazio anticipatamente
    A costo di dire una mega minchiata...

    Secondo me potresti fare cosi:

    codice:
    Pippo *eliminaPrimo (Pippo *elem)
    {
    	Pippo *aux;
    	aux = elem;
    	elem = elem->next;
    	free (aux);
    	return elem;
    }
    Prova ma...

  3. #3
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154
    Ok, ci siamo quasi
    La funzione va... credo forse sia sbagliata la mia chiamata. Restando ferme le dichiarazioni di sopra, la chiamata va fatta così?
    codice:
    array[0] = eliminaPrimo (array[0]);
    EDT:
    codice:
    Pippo *array[3];
    mi dichiara un array di puntatori a strutture di tipo Pippo o un array di strutture di tipo Pippo?

  4. #4
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da Alcott
    Ok, ci siamo quasi
    La funzione va... credo forse sia sbagliata la mia chiamata. Restando ferme le dichiarazioni di sopra, la chiamata va fatta così?
    codice:
    array[0] = eliminaPrimo (array[0]);
    EDT:
    codice:
    Pippo *array[3];
    mi dichiara un array di puntatori a strutture di tipo Pippo o un array di strutture di tipo Pippo?
    Penso che tu debba fare:
    codice:
    array = eliminaPrimo(array[0]);
    Scrivendo
    codice:
    Pippo * array[3]
    dichiari un array di 3 puntatori a struct Pippo.
    Credo che avresti ottenuto una cosa "analoga" scrivendo:

    codice:
    Pippo ** array = (Pippo**) malloc(sizeof(Pippo) * 3);
    array[0] = (Pippo*)malloc(sizeof(Pippo));
    array[1] = (Pippo*)malloc(sizeof(Pippo));
    array[2] = (Pippo*)malloc(sizeof(PippO));
    Provare...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.