View Full Version : [C] struttura ricorsiva.
canepazzojoe
27-01-2012, 16:15
Voglio fare una struttura che punta ad altre strutture dello stesso tipo , pero il numero di puntatori non è definito a priori come posso fare?
La struttura di cui parlo è di questo tipo
typedef struct territorio{
int giocatore=NG;
int carri=0;
struct territorio *vicino0,*vicino1,*vicino2,*vicino3;
}Territorio;
però al posto di vicino0 ecc ecc voglio fare in modo che il numero di territori vicini non sia fisso, come posso fare?
lista dinamica dei vicini?
canepazzojoe
27-01-2012, 20:39
ok so cos'è una lista ma non so come si usa mi puoi fare un esempio per esempio se un territorio ha 2 vicini e uno dei due vicini ne ha vicini 3? prechè non saprei come usarla in questo caso. Una lista mi ricorda più una pila o una coda xd
ok so cos'è una lista ma non so come si usa mi puoi fare un esempio per esempio se un territorio ha 2 vicini e uno dei due vicini ne ha vicini 3? prechè non saprei come usarla in questo caso. Una lista mi ricorda più una pila o una coda xd
semplicemente hai una struttura che contiene oltre i tuoi dati anche un puntatore ad un oggetto di tipo territorio.
quel puntatore viene usato per collegare un nodo della lista ai successivi e per l'ultimo valore della lista sarà nullo.
nel tuo programma terrai memorizzato, tramite un puntatore di tipo territorio la posizione in memoria del primo elemento della lista (testa) che nel caso di lista vuota varrà null
la lista è sequenziale quindi accedi al primo elemento e scorri la lista usando il puntatore all'elemento successivo.
ovviamente essendo la lista dinamica devi gestire l'heap e quindi creare gli oggetti quando ti servono e cancellarli manualmente dalla memoria quando li elimini dalla lista.
canepazzojoe
28-01-2012, 12:54
semplicemente hai una struttura che contiene oltre i tuoi dati anche un puntatore ad un oggetto di tipo territorio.
quel puntatore viene usato per collegare un nodo della lista ai successivi e per l'ultimo valore della lista sarà nullo.
nel tuo programma terrai memorizzato, tramite un puntatore di tipo territorio la posizione in memoria del primo elemento della lista (testa) che nel caso di lista vuota varrà null
la lista è sequenziale quindi accedi al primo elemento e scorri la lista usando il puntatore all'elemento successivo.
ovviamente essendo la lista dinamica devi gestire l'heap e quindi creare gli oggetti quando ti servono e cancellarli manualmente dalla memoria quando li elimini dalla lista.
e dalla lista come faccio a capire il territorio quanti ne ha vicini?
e dalla lista come faccio a capire il territorio quanti ne ha vicini?
Scorri tutta la lista e conti i territori presenti oppure metti un int nella struttura territorio che rappresenta il numero di vicini, però così facendo devi sempre tenere aggiornato questo campo (incrementi di uno quando aggiungi un territorio nella lista, decrementi quando lo togli, ecc...).
canepazzojoe
01-02-2012, 01:08
Scorri tutta la lista e conti i territori presenti oppure metti un int nella struttura territorio che rappresenta il numero di vicini, però così facendo devi sempre tenere aggiornato questo campo (incrementi di uno quando aggiungi un territorio nella lista, decrementi quando lo togli, ecc...).
Quindi per ogni territorio mi tocca fare una lista e non c'è altro modo?
Quindi per ogni territorio mi tocca fare una lista e non c'è altro modo?
E' la soluzione più intuitiva e semplice...
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.