Cześć mam problem z funkcją poniżej
Oto treść:
"funkcję usunFragmenty usuwającą ze sznura ciągi sąsiednich elementów sznura w następujący
sposób: usuwamy P elementów sznura (lub tyle ile jest, gdy jest mniej), następnie omijamy
najdłuższy możliwy przynajmniej 2-elementowy ciągły fragment tworzący ciąg rosnący (jeśli taki
fragment istnieje), usuwamy P elementów, omijamy ciąg rosnący, itd. (P jest liczbą całkowitą
dodatnią będącą parametrem funkcji). Pamięć zajmowana przez usuwane elementy ma zostać
zwolniona. Funkcja nie może używać tablic, pomocniczych sznurów ani struktur danych
dostępnych w bibliotece standardowej (wektorów, list, kolejek, itp);"
Oto mój kod:
void sznur::usunFragmenty(int P)
{
Node*zaszuk=nullptr;
Node*szuk=pocz;
while(true)
{
for(int i=0;i<P && szuk!=nullptr;i++) {
Node *killer = szuk;
szuk = szuk->nast;
if (zaszuk == nullptr) {
pocz = szuk;
} else {
zaszuk->nast = szuk;
}
delete killer;
ileJest--;
}
if (szuk == nullptr) {
return;
}
bool czy_znalezione=false;
if(szuk->nast!=nullptr && szuk->nast->dane>szuk->dane)
{
czy_znalezione=true;
zaszuk=szuk;
szuk=szuk->nast;
}
if(szuk->nast != nullptr && czy_znalezione==true) {
zaszuk = szuk;
szuk = szuk->nast;
}
}
}
problem dotyczy sznura o wartościach wejściowych dla P=3 to 4,7,5,1,6,6,1,7,7,3,2,1,2,3,1 uzyska postać 1,6,1,2,3, u mnie ta funkcja uzyskuje tylko to 1,6,1,2, nie mogę uzyskać liczby 3 nie wiem już gdzie leży problem proszę o pomoc