Cześć, piszę funkcję która ma daną jako argument liczbę naturalną x i ma za zadanie stworzyć x-elementowy cykl o wartościach ustawionych rosnąco i zwrócić wskaźnik na najmniejszy element w tym cyklu.
Zrobiłem to tak że stworzyłem po prostu listę x-elementową z wartownikiem, do niej dodawałem w odpowiednich miejscach elementy i potem ją "zawinąłem" - wskaźnik z ostatniego elementu ustawiłem na pierwszy - działało.
Jednak teraz próbuję to zrobić nieco inaczej - od początku mieć cykl do którego będę dodawał elementy w odpowiednich miejscach - jednak mój program nie działa, jakby ktoś mógł spojrzeć to byłbym wdzięczny.
struct node
{
int w;
node *next;
};
node * create_cycle(int x)
{
srand( time( NULL ) );
node *first = new node; // tworzenie cyklu 1-elementowego
first->w = rand() % 10;
first->next = first;
node *new_n; // wskazywany element bedziemy dodawac
node *tmp; // ma znaleźć miejsce gdzie mamy dodać element aby cykl pozostał rosnący
for(int i = 1; i < x; i++)
{
tmp = first;
new_n = new node;
new_n->w = rand() % 10;
while(tmp->next != first)
{
if(new_n->w < tmp->next->w) break; // jeżeli tmp->w < new_n->w < tmp->next->w
tmp = tmp->next;
}
new_n->next = tmp->next->next; //wstawiannie new_n
tmp->next = new_n;
}
return first;
}