|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2008
Messaggi: 46
|
[C] struttura ricorsiva.
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? |
|
|
|
|
|
#2 |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21838
|
lista dinamica dei vicini?
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jun 2008
Messaggi: 46
|
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
|
|
|
|
|
|
#4 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21838
|
Quote:
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.
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Jun 2008
Messaggi: 46
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 246
|
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...).
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto. CONCLUSO POSITIVAMENTE CON: oldfield |
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Jun 2008
Messaggi: 46
|
Quote:
|
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 246
|
E' la soluzione più intuitiva e semplice...
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto. CONCLUSO POSITIVAMENTE CON: oldfield |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:53.




















