| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  27-01-2012, 16:15 | #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? | 
|   |   | 
|  27-01-2012, 16:19 | #2 | 
| Moderatore Iscritto dal: Nov 2006 
					Messaggi: 21833
				 | 
		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 | 
|   |   | 
|  27-01-2012, 20:39 | #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
		 | 
|   |   | 
|  28-01-2012, 10:50 | #4 | |
| Moderatore Iscritto dal: Nov 2006 
					Messaggi: 21833
				 | 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 | |
|   |   | 
|  28-01-2012, 12:54 | #5 | |
| Member Iscritto dal: Jun 2008 
					Messaggi: 46
				 | Quote: 
 | |
|   |   | 
|  28-01-2012, 13:35 | #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 | 
|   |   | 
|  01-02-2012, 01:08 | #7 | |
| Member Iscritto dal: Jun 2008 
					Messaggi: 46
				 | Quote: 
 | |
|   |   | 
|  01-02-2012, 11:24 | #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: 05:05.









 
		 
		 
		 
		








 
  
 



 
                        
                        










