/ / Wdrażanie Popbacka w stałym czasie na pojedynczo połączonej liście - c ++, struktury danych, połączona lista, pojedynczo-połączona lista

Wdrażanie Popbacka w stałym czasie na pojedynczo połączonej liście - c ++, struktury danych, lista połączona, pojedynczo-połączona lista

Chciałem wiedzieć, czy to było możliwe (Powinien być tak, jak robi to program std :: list) do wykonania operacji PopBack () na pojedynczo połączonej liście w stałym czasie i jak?

Zakładam, że przechowujemy głowę i ogonwskaźniki. W takim przypadku PushBack (), PushFront (), PopFront () mogą być łatwo zaimplementowane w stałym czasie. Ale nie można myśleć o sposobie implementacji PopBack () o tym samym czasie działania.

Odpowiedzi:

4 dla odpowiedzi № 1

Nie możesz wdrożyć pop_back dla pojedynczej połączonej listy w stałym czasie. Aby to zrobić, musisz znać poprzedni element przed ostatnim, który jest ostatnim elementem, zawiera odniesienie do poprzedniego elementu. Jeśli tak, to będziesz miał podwójnie połączoną listę.

Możesz uzupełnić push_back w stałym czasie. Jedną z moich propozycji dla C ++ Standard było wprowadzenie std::x_forward_list to będzie wspierać push_back funkcja członka. W takim przypadku będziesz mógł użyć takiej pojedynczej połączonej listy do symulacji kolejki.