Witam, mam do napisania program, który tworzy graf, a następnie wyszukuje w nim cykl Hamiltona. Niestety coś poszło nie tak i funkcja rekurencyjna wyszukiwania cyklu trochę oszalała. Teoretycznie wyszukuje ona ten cykl, ale wypisuje wynik kilka razy(czasem są to różne wyniki). W momencie kiedy powinna się skończyć, wypisuje wynik, a potem "wskakuje" w środek(konkretnie to do pierwszej pętli for) omijając nawet warunek if. Nie mam pojęcia z czego to może wynikać, proszę o pomoc.
void Hamilton(int v)
{
bool sprawdz;
Lista *p;
stos[s++]=v;
if(s<n)
{
odwiedzone[v]=true;
for(p=tablica[v]; p ; p=p->next )
if(!odwiedzone[p->v]) Hamilton(p->v);
odwiedzone[v]=false;
}
else
{
sprawdz=false;
for(p=tablica[v]; p; p=p->next)
{
if(!p->v)
{
sprawdz=true;
break;
}
}
if(sprawdz==true)
{
cout<<"W grafie istnieje cykl Hamiltona"<<endl;
}
else
{
cout<<"W grafie nie ma cyklu Hamiltona"<<endl;
}
for(int i=0; i<s; i++)
{
cout<< setw(3) << stos[i];
}
if(sprawdz)
{
cout<< setw(3) << 0;
}
cout<<endl;
}
s--;
}