Chociaż ta kwestia została już odpowiedział, nie jestem jakoś zadowolony z odpowiedzi (bez obrazy oznaczało), więc oto jak chciałbym odpowiedzieć:
Czego używać - pojedynczo lub podwójnie związany lista zależy co zamierzasz osiągnąć i ograniczeń systemu, jeśli takie istnieją.
Pojedynczo-linked lista:
Plusy: prosty w realizacji, wymaga stosunkowo mniejszą pamięć do przechowywania, zakładając, że trzeba usunąć/insert (at) następny węzeł - usunięcie/wstawiania jest szybciej.
Wady: Nie można wykonać iteracji wstecznej, należy zachować uchwyt do węzła głównego listy, lista zostanie utracona w pamięci. Jeśli usuwasz poprzedni węzeł lub wstawiasz w poprzednim węźle, będziesz musiał przejść przez listę od głowy do poprzedniego węzła, aby móc wykonać te operacje - czas O (N).
- To powinno być używane, gdy masz mniejszą pamięć, a twoim głównym celem jest wstawianie/usuwanie i nie szukanie elementów.
podwójnie połączonej listy:
Plusy: można powtórzyć w przód jak i tył. W przypadku konieczności usunięcia poprzedniego węzła, nie ma potrzeby przechodzenia z węzła głównego, ponieważ węzeł, który ma zostać usunięty, można znaleźć na podstawie wskaźnika ".previous".
Wady: Stosunkowo skomplikowane do wdrożenia, wymaga więcej pamięci do przechowywania (1 "poprzedni" wskaźnik na węzeł). Insercji i delecji są stosunkowo bardziej czasochłonne (przypisywanie/realokacja”.previous' wskaźnik dla węzłów sąsiednich)
--This powinny być stosowane, gdy nie masz lub minimalne ograniczenia dotyczące pamięci, a głównym celem jest, aby szukać elementów .
Jeśli jest więcej plusów i minusów, prosimy dodać, odpowiedzieć w komentarzach. Dzięki!
Jedna jest bardziej elastyczna, druga wymaga więcej narzutów. Ponadto Twoje połączone listy są naprawdę połączonymi listami. – robert
Użyłem tych zdjęć, aby uzyskać prawdziwą heads-up. – Tarik
Możesz chcieć zobaczyć [zwykłe, połączone i podwójnie połączone listy-kiedy i dlaczego] (http://stackoverflow.com/questions/712429/plain-linked-and-double-linked-lists- kiedy i dlaczego) – nawfal