Wpis z mikrobloga

@yungdupa na studiach się coś takiego robiło xD chodzi o to że każdy element ma wskaznik na nastepny element (jak w zwyklej liscie) oraz na poprzedni element (nowosc). W dodatku ostatni element ma wskaznik na pierwszy a pierwszy na ostatni
  • Odpowiedz
To jest jedna z tych rzeczy, których nikt nie używa, a są z niewiadomego powodu nadal w programie studiów?


@vytah: Cykliczna faktycznie nie jest zbyt często potrzebna, ale list dwukierunkowych używasz non stop, jeśli cokolwiek poważniejszego niż hello world piszesz. Fajnie wtedy wiedzieć jakie ma ograniczenia złożoności operacji, żeby np. nie robić listy w miejscu gdzie potrzebna jest tablica asocjacyjna albo zwykła.
  • Odpowiedz
@Feargan: to że ostatni element trzyma wskaźnik na początkowy + każdy element ma wskaźnik na następny element i wskaźnik na poprzedni element, po takiej liście można sobie iść w kółeczkow w dwie strony
  • Odpowiedz
@yungdupa: Jak chcesz tego użyć w projekcie to raczej głupi pomysł.
Zdefiniuj najczęściej wykonywane operacje i spróbuj wybrać coś z biblioteki standardowej.
Chodzenie w kółeczko oferuje każda struktura. A jak bardzo chcesz to poczytaj o buforze cyklicznym.
  • Odpowiedz
list dwukierunkowych używasz non stop, jeśli cokolwiek poważniejszego niż hello world piszesz


@GaiusBaltar: W dzisiejszych czasach, listy dwukierunkowe mają bardzo ograniczone zastosowanie, używa je się tylko tam, gdzie przewidywalność alokacji pamięci jest niezbędna, albo gdzie potrzeba szybkiego wstawiania z obu końców listy. Natomiast wektor zużywa mniej pamięci i jest szybszy we wszystkich pozostałych sytuacjach.
Współczesne języki często nawet nie mają listy dwukierunkowej w swoich bibliotekach standardowych, wektory są zawsze.
  • Odpowiedz
@Malkof: motyw ogólnie jest taki, że skoro mam gierkę turowa dla kilku graczy, to mogę zrobić tak -
wskaźnik na gracza 1, gracz 1 wykonuje akcje,
wskaźnik na gracza 2, gracz 2 wykonuje akcje,
i tak dalej aż do gracza ostatniego po którym wskaźnik przechodzi na gracza 1
dodatkowo niektóre karty specjalne zamieniają kierunek ruchu wskaźnika (nie wiem czy to jest formalnie poprawne określenie, ale chyba wiadomo o co chodzi)
  • Odpowiedz
@GaiusBaltar: Nie używa się ich prawie nigdy, bo mają szereg wad: iterowanie po liście jest dużo wolniejsze niż po wektorze, a operacje dodawania lub usuwania elementów wymagają alokacji na stercie, co też jest powolne, nie oferują dostępu swobodnego w czasie O(1). Sens jest chyba tylko wtedy, gdy musisz robić operacje na środku listy, o ile API zrobisz na tyle sprytnie, że nie trzeba będzie zawsze iterować do środka.

@
  • Odpowiedz
@Krolik: ja nie potrzebuję szybkiego wstawiania, bo to robię tylko raz w programie (na samym początku gdy wprowadza się liczbę graczy) tylko łatwego przemieszczania się po składnikach struktury danych
  • Odpowiedz