Funkcja nie zakańcza działania

1

Mam problem, napisałem funkcję, która implementuje listę jednokierunkową, następnie badam czasy kilku operacji na niej wykonywanych (dodawanie/usuwanie elementu na początku listy, w środku oraz w losowym jej miejscu), cały kod funkcji tutaj: http://pastebin.com/51FUtdjG (tworzeniem listy sugerowałem się wg -> http://edu.i-lo.tarnow.pl/inf/utils/002_roz/ol013.php). Problem polega na tym, że funkcja lista() jest wywoływana z funkcji main i nie kończy swojej pracy. Tzn wyświetla **cout **z ostatniej linijki:

 cout << "Zakonczenie funkcji\n";

I stoi, nic się nie dzieje, obsługa nie wraca do funkcji main. Czym to może być spowodowane? Nie kończę gdzieś pętli? Nie wydaje mi się... Może ktoś ma bystrzejsze oko. Z góry dzięki!

0

wklej dzialajacy kod, a nie jakies poszatkowane czesci, gdzie tu masz funkcje main? Bo ja nie widze

0

Plus sprawdź kod debuggerem.

1
 while(sl.size()) sl.pop_front();

Podejrzewam, że masz źle zaimplementowane size, albo pop_front

0

W mainie jest tylko wywołanie "lista();" i "system("pause)"., więc to dla nas nieistotne. Najciekawsze jest to, że jak zdebuguję program i mam plik .exe i go odpalam to tak normalnie funkcja się kończy i przekazuje obsługę do maina z powrotem...
Sprawdzałem size i pop_front, są zaimplementowane tak jak ja tej stronie -> http://edu.i-lo.tarnow.pl/inf/utils/002_roz/ol013.php , nie doszukałem się tam błędów. Myślałem najpierw, że może counter źle się zmniejsza/zwiększa, dlatego pętlę usuwającą wykonuję 5000razy, czyli tyle ile jest elementów w liście.

0

Problem może tkwić nie w samych zmiennych ale w tym jak przyłożyliśmy sie do danego programu, ile czasu mu poświęciliśmy . Zachęcam do dalszej pracy

0

Aha :D. Najs, temat przeniesiony do "Newbie", ale pomóc nikt nie potrafi. Na problem dla początkujących mi to nie wygląda :P. Po prostu się dziwię, bo wszystkie pętle kończą mi działanie, a obsługa nie jest przekazywana z funkcji do main. Nvm, ważne, że działa dobrze w pliku wykonywalny, może to jakieś błędy środowiska, popróbuję w innych IDE.

0

Może wklej kod?

0

Faktycznie, kod musiał wczoraj wygasnąć. Tutaj całość -> http://pastebin.com/yJigvds1
I nie ma problemu z "menu" zrobionego do-whilem, do sprawdzania czy z funkcji lista() obsługa wraca do maina dopisałem wypisanie wykrzykników po jej zakończeniu (case 'l': {lista(); cout << "!!!!!"; }).

0

Doszedłem z pomocą debuggera do błędu. Otóż coś jest nie tak z instrukcją w destrukorze - delete front;. Może błędnie usuwam listę? Bo po zakomentowaniu tej linijki jest ok, obsługa wraca do maina.

EDIT:
Dobra, dałem radę. Błędem było to, że gdy robiłem testy czasu wykonywania operacji to chcąc za każdym razem od nowa wypełniać listę losowymi wartościami, ja po prostu dokładałem te wartości do listy bez uprzedniego wywalenia z niej starej zawartości... I dlatego lista bardzo mi się powiększała, a na końcu był problem z usuwaniem elementów. Dlatego przed każdym wypełnianiem listy od nowa dodałem usuwanie najpierw wszystkich elementów i jest ok. Dzięki wszystkim za pomoc :).

1 użytkowników online, w tym zalogowanych: 0, gości: 1