void replace_first_last(node*& H)
{
node* p = H;
node* q = H;
node* r = H;
while (q->next->next != NULL)
q = q->next;
r = q->next;
if (H != NULL && H->next != NULL)
{
H->next = r->next;
r->next = p->next;
q->next = p;
H = r;
}
}
To moj kod mający za zadanie zamienić pierwszy element listy z ostatnim. Nie chodzi o podmianę wartości, tylko o przepisanie odpowiednich wskaźników. Mam taką listę: H->31->31->15->15->31->31->15->15->NULL, więc funkcja powinna zamienić ją na taką: H->15->31->15->15->31->31->15->31->NULL, a zamienia na H->15->NULL. Co robię źle? Przy okazji mogę prosić o jakąś podpowiedź jak stworzyć funkcję, która zamienia elementy listy w następujący sposób, że na przykład z listy H->1->3->5->NULL tworzy listę H->1->3->3->3->5->5->5->5->5->NULL ?