Cześć mam problem z tą funckją
Treść:
funkcję usun rozpatrującą rozłączne trójki elementów sznura i usuwającą te z elementów trójki,
które nie zawierają wartości najmniejszej w obrębie takiej trójki (w każdej trójce pozostaje jeden,
dwa lub trzy elementy w zależności od tego czy wartość najmniejsza się powtarza). W przypadku
sznura o długości nie podzielnej przez 3 końcowe elementy (nie wchodzące w skład żadnej trójki –
trójki wybierane są tak, że pierwszy element sznura jest początkowym elementem pierwszej trójki)
są modyfikowane tylko gdy są przynajmniej dwa i mają różne wartości (usuwany jest ten
przechowujący większą wartość). 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);
Kod:
void sznur::usun()
{
Node*zaszuk=nullptr;
Node*a=pocz;
while(a!=nullptr && a->nast!=nullptr && a->nast->nast!=nullptr)
{
Node*jeden=a;
Node*dwa=a->nast;
Node*trzy=a->nast->nast;
if(jeden->dane>dwa->dane && dwa->dane>trzy->dane)
{
Node*killer=jeden;
a=trzy;
if(zaszuk!=nullptr)
{
zaszuk->nast=trzy;
}
else
{
pocz=jeden;
}
delete killer;
ileJest--;
}
else
{
zaszuk=jeden;
a=zaszuk->nast;
}
}
}
Pytanie gdzie jest błąd co robie źle i w którym miejscu poprawić
przykład dla sznura 4 7 5 1 6 1 7 3 2 9 1 -> 4,1,1,2,1,
a mi wychodzi
4 7 5 1 6 1 7 3 2 9 1 -> 4 , 1 , 6 , 1 , 2 , 9 , 1 ,gdzie może być błąd