/*
Wstaw kopię podanej listy "fragment" do danej listy jednokierunkowej
"glowa" pomiędzy każdymi dwoma elementami
Przykład:
jeżeli funkcja zostanie wywołana dla listy (4, 7, 1, 3) z argumentem
fragment=(3, 2, 1), w wyniku otrzymamy listę
(4, 3, 2, 1, 7, 3, 2, 1, 1, 3, 2, 1, 3)
*/
Kod: Zaznacz cały
void wstaw_pomiedzy_dwa(wezel*& glowa, wezel* fragment)
{
if (glowa==NULL || glowa->nast==NULL || fragment==NULL)
return;
wezel* w = glowa;
wezel* w2 = glowa->nast;
while (w2!=NULL)
{
w->nast = fragment;
w = w->nast;
while (w->nast!=NULL)
w = w->nast;
w->nast = w2;
w = w2;
w2 = w->nast;
}
}
Kod: Zaznacz cały
while (w->nast!=NULL)
w = w->nast;
Sprawdzałam, czy kod działa, jeśli fragment wkleić tylko raz (czyli bez tego zewnętrznego whila) i wtedy wszystko jest ok.