Originariamente inviato da tulkas85
si sto provando a fare questa lista...
ma lo spazio per gli elementi della lista lo alloco man mano che inserisco giusto ?
Si certo per ogni inserimento devi allocare un nuovo nodo.
A grandi linee l'algoritmo è questo:


Crei innanzitutto una struttura nodo che abbia un puntatore a nodo per il successore (lista concatenata semplice) ed un campo dati in cui memorizzi le informazioni (nel tuo caso una struttura di tipo grafo mi pare di capire).

INSERIMENTO:
Quando devi inserire un nuovo elemento la prima cosa da fare è creare un nuovo elemento nodo ed inizializzare i suoi campi (il puntatore next a NULL e il campo dati con i dati del nuovo elemento).Poi occorre controllare se la lista è vuota ,cosa che si può vedere dal puntatore alla testa che è ancora NULL.Nel caso sia vuota non hai da far nulla oltre ad aggiornare il puntatore alla testa facendolo puntare al nuovo nodo appena creato.Se la lista non vuota (puntatore alla testa non NULL) allora devi scandire la lista elemento per elemento a partire dalla testa fino a trovare la corretta posizione.Tale posizione è indicata dal fatto che (supponendo un ordinamento decrescente) l'elemento corrente è diventato minore (il confronto lo farai in base a un campo chiave dei dati) di quello da inserire.Quando hai trovato la posizione devi solo aggiustare i puntatori in modo opportuno.In realtà hai due scelte:dato che stai lavorando con una lista semplicemente concatenata in teroria quando arrivi alla condizione in cui l'elemento corrente è diventato minore di quello da inserire è già tardi perchè non puoi più lavorare sul puntatore a next del nodo che lo precede.Qquindi o ti sei premunito e per ogni nodo hai memorizzato anche il puntatore al precedente durante la scansione della lista, (ma questo richiede di distinguere il caso speciale della testa) o usi i doppi puntatori.Quest'ultimo approccio è leggermente più sottile e difficile da comprendere ma consente di scrivere del codice più compatto ed elegante per fare l'inserimento.
Ovviamnete l'inserimento si avvale dell'ipotesi che la tua funzione sia l'unioca a manipolare la lista e che quindi gli elemnti inseriti siano costantemente ordinati.

CANCELLAZIONE DELL'ELEMENTO TOP
Direi che è banale, devi solo fare in modo che il puntatore alla testa della lista punti al nodo next della testa attuale e restituire il nodo cancellato.