problem z funkcją usuń
Ostatnio zmodyfikowano 2023-08-03 18:59
tybik843 Temat założony przez niniejszego użytkownika |
problem z funkcją usuń » 2023-08-02 23:51:55 Cześć mam problem pewną funkcją usuń potrzebuje pomocy oto treść Funkcja usun usuwająca ze sznura nieprzedłużalne (przynajmniej 2-elementowe) ciągi elementów przechowujących wartości podzielne przez K (K jest liczbą całkowitą dodatnią będącą parametrem funkcji) wraz z elementem znajdującym się bezpośrednio po usuwanym ciągu (o ile taki istnieje). Pamieć zajmowana przez usuwane elementy ma zostać zwolniona Oto mój kod void sznur::usun( int K ) { Node * zaszuk = nullptr; Node * szuk = pocz; while( szuk != nullptr ) { Node * koniec = szuk; Node * poprzedni = szuk->nast; int c = 1; while( poprzedni != nullptr && koniec->dane % K == 0 ) { c++; koniec = poprzedni; poprzedni = poprzedni->nast; } if( c > K ) { Node * killer = szuk; szuk = poprzedni; if( zaszuk != nullptr ) { zaszuk->nast = poprzedni; } else { pocz = poprzedni; } delete killer; ileJest--; } else { zaszuk = koniec; szuk = poprzedni; } } }
problem pojawia sie przyostatnim sznure który powinien być pusty a nie jest bo wyświetlają sie 4 4 gdzie zrobiłem błąd w kodzie i jak go rozwiązać z góry dzięki za pomoc |
|
pekfos |
» 2023-08-03 18:59:27 Nie zwalniasz całej pamięci, a warunek c > K nie wynika z treści zadania. |
|
« 1 » |