Kod: Zaznacz cały
void przesunco2a(wezel* pocz)
{
// przesunięcie co drugiego w kolejnoci elementu na koniec listy, z zachowaniem ich pierwotnej względnej kolejnoci
// umowa: zaczynamy od II elementu
// pocz zatem nie przekazujemy przez referencję, bo głowa się nie zmieni
if (pocz == NULL || pocz->nast == NULL || pocz->nast->nast == NULL)
return; // nie ma nic do roboty
wezel* koniec = pocz; // znajdĽ ogon listy - tam będziemy wstawiać
while (koniec->nast != NULL)
koniec = koniec->nast;
wezel* starykoniec = koniec; // zapamiętaj, gdzie był koniec, by wiedzieć, gdzie skończyć
do // na pewno raz musimy co przestawić
{
// pocz->nast przenosimy na koniec
koniec->nast = pocz->nast;
pocz->nast = pocz->nast->nast; // wskaż nie na następny, ale na po-następny
pocz = pocz->nast; // idĽ dalej
koniec = koniec->nast; // teraz tu jest koniec
koniec->nast = NULL;
}
while (pocz != starykoniec && koniec != starykoniec);
}