Vai al contenuto
PLC Forum


Programmare In C - Trasformare una lista concatenata


Messaggi consigliati

Inserito:

dovrei risolvere queto problema:

devo modificare le funzioni di una lista concatenata in modo che la lista

diventi circolare(in particolare che il successivo dell' ultimo elemento

e' il

primo). In particolare devo scrivere una function che scriva il contenuto

della

lista a partire da un elemento arbitrario.

Se volete che vi spedisca la lista concatenata da modificare speditemi una mail a cisoman[at]virgilio.it


Inserita:

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

Inserita:

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

Inserita:

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!

:lol:

Ciao,

Vittorio

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...