Ho provato ad aggiornare adesso il codice, ma c'è qualcosa che non capisco:
Ho pure fatto il disegno per avere un riferimento visivo e per tracciare ogni passo( anche qui non capisco come fare per condividere delle immagini mie, perché se uso un sito di condivisione, per esempio imgur, mi da l'errore : "Impossibile determinare le dimensioni dell’immagine. Verifica che l’URL inserito sia corretto.")
#include <stdio.h>
#include <stdlib.h>
#define N 36
typedef struct node_
{
int item;
struct node_* next;
char* colore;
}node;
typedef node* link;
void init(link* t, link* x)
{
*t = malloc(sizeof *t);
(*t)->next = *t;
(*t)->item = 0;
(*t)->colore = "verde";
*x = *t;
}
void insert(link* t, link* x, int value)
{
link new = malloc(sizeof *t);
(*x)->next = new;
new->item = value;
*x = new;
(*x)->next = *t;
}
int main()
{
link t;
link x;
init(&t, &x);
unsigned int i, j = 0;
int valore[N] ={32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10,
5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26};
char *c[2] = {"rosso", "nero"};
for(i = 0; i < N; i++)
{
insert(&t,&x, valore[i]);
}
x = t;
do
{
printf("->%d->", x->item);
x = x->next;
}
while(x != t);
puts("");
/*do
{
puts(x->colore);
if( j%2 == 0)
x->next->colore = c[0];
else
x->next->colore = c[1];
x = x->next;
j++;
}
while(x->next != t);*/
}
Alla fine ho mantenuto la funzione init in modo da avere il nodo con lo zero già presente come riferimento fisso con t.
la funzione insert dentro il ciclo for crea ogni volta un nuovo nodo, gli passa il valore dell'array e scorre la x cosicché sia linkata sempre all'ultimo nodo inserito senza toccare ovviamente la t, quindi Alla fine del for io so che la x si trova nel nodo contenente il 26.
Successivamente faccio partire la x nuovamente dal nodo 0 e comincio a stampare tutti i valori con il do-while.
Infine nell'ultimo ciclo( anche se ho già provato a farlo nel ciclo for insieme alla insert) provo a riempire il campo informativo del colore, e anche qui so, senza quindi il bisogno di aggiornare niente, che la x sia linkata al nodo 0.
Il problema è che so provo a compilare ed avviare il programma includendo anche quest'ultimo ciclo, dopo aver stampato comunque tutti i numeri e anche i colori,
mi appare una finestra con il messaggio: " a.exe ha smesso di funzionare"....