Witam, otóż napisałem sobie listę następników grafu skierowanego bez cykli (DAG). Problem pojawia się, gdy chce wyświetlić ją po raz drugi (ponownie użyć show_nlist(n)). Program zapętla sie w nieskończoność... Nie mam pojecia, gdzie leży błąd. Przed tworzeniem listy mam macierz NxN losowo wypełnioną 1/0 tak aby była DAG.
struct nlist{ // lista nastepnikow
int value;
nlist * next;
};nlist nlist_tab[N*1000]; //// N=20000
void make_nlist(int n){
nlist * prev;
int p=0;
for (int i=0 ; i<n ; i++){
nlist *x = new nlist;
prev = x;
x->value = i;
x->next = NULL;
for (int j=i ; j<n ; j++){
if (tab[i][j]){
nlist *y = new nlist;
y->value = j;
prev->next = y;
prev = y;
y->next = NULL;
}
}
nlist_tab[p] = *x;
p++;
}
}
void show_nlist(int n){
nlist *x = new nlist;
for (int i=0 ; i<n ;i++){
*x = nlist_tab[i];
printf ("%2d ",1+x->value);
while (x->next){
x=x->next;
printf ("-> %2d ",1+x->value);
}
printf ("\n");
}
}