Checo Inserito: 16 dicembre 2003 Segnala Inserito: 16 dicembre 2003 dovrei risolvere queto problema:devo modificare le funzioni di una lista concatenata in modo che la listadiventi circolare(in particolare che il successivo dell' ultimo elementoe' ilprimo). In particolare devo scrivere una function che scriva il contenutodellalista a partire da un elemento arbitrario.Se volete che vi spedisca la lista concatenata da modificare speditemi una mail a cisoman[at]virgilio.it
vebernasconi Inserita: 16 dicembre 2003 Segnala Inserita: 16 dicembre 2003 Se ho capito bene, per risolvere il tuo problema basta aggiungere un puntatore al nodo che, nel caso esso sia l'ultimo elemento, punti al primo della lista altrimenti a NULL.Per stampare la lista a partire da un elemento arbitrario potresti salvare l'indirizzo del puntatore di quel nodo che punta al successivo elemento e ogni volta che scorri la lista verifichi che il puntatore al nodo successivo non sia uguale a quello salvato. Quando lo è, sai che hai stampato tutta la lista in maniera pressochè automatica ( se hai costruito la lista come suggerito prima).Ciao,Vittorio
Checo Inserita: 16 dicembre 2003 Autore Segnala Inserita: 16 dicembre 2003 DEvo aggiunger un puntatore che punti al primo,ma qual'è l'istruzione giusta?la mia meil e cisoman[at]virgilio.it...se vi spedisco la lista riuscite a farmi le modifiche necessarie?grazie per gli aiuti
vebernasconi Inserita: 17 dicembre 2003 Segnala Inserita: 17 dicembre 2003 In che linguaggio? Mi sa che ti serve un buon libro di algoritmi ! Se inoltre vuoi imparare il C++ è disponibile in rete un buon libro sulla programmazione ad oggetti,ma il link non lo ricordo. Prova a chiedere ( oppure a controllare con google ) i gruppi di discussione, se non sbaglio vi anche un it.comp.* dovrebbe essercene uno sul c.Per esempio in C ( non garantisco per la sintassi perchè riesco sempre a sbagliarla) :-)typedef struct nodo { int dato; nodi* successivo; nodi* precedente; } nodi;Inoltre ti crei un ulteriore puntatore di tipo nodo che chiamato testa che punterà sempre alla testa della tua lista.nodi * testa;testa non avrà nessun dato, ma in compenso i sui puntatori successivo e precedente punteranno rispettivamente all primo elemento della lista ed all'utltimo.A questo punto non ti resta che costruire la tua lista, infatti il primo elemento avrà entrambi i puntatori a NULL mentre testa dovrà avere i puntatori successivo e precedente che puntano all'unico elemento della lista.Se inserisi un nuovo elemento, lo colleghi al primo, ovverosia fai in modo che il puntatore successivo del primo punti al secondo elemento e il puntatore precedente del secondo punti al primo elemento.Inoltre, visto che il primo è diventato la coda, e che hai solo due elementi i rispettivi puntatori precedenti e successivo si punteranno tra loro.Inserendone un terzo lo accoderai alla lista e cambierai di conseguenza i puntatori. Come se componessi un treno con dei vagoni.Per un esempio di codice cerca in rete, ce ne sono tanti....Ma mi sa che sei uno studente che vuole il compito già bello risolto! Ciao,Vittorio
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora