/ / dlaczego robimy head a null w pojedynczo połączonej liście? - struktury danych, węzły, lista pojedynczo połączona

dlaczego sprawiamy, że head ma wartość null na pojedynczo połączonej liście? - struktury danych, węzły, listy pojedynczo związane

Dlaczego tak się dzieje, gdy staramy się stworzyć jedno połączenielista robimy Head NULL w klasie i nie robimy Next of the Head jako Null. W funkcjach dotyczących połączonych list dlaczego robimy Next węzłów Null i nie robimy Node Null?

Odpowiedzi:

0 dla odpowiedzi № 1

Aby uniknąć marnotrawstwa. Węzeł listy jest przeznaczony do przechowywania elementu wewnątrz niego. Wyobraź sobie, że w proponowanym scenariuszu mieliśmy pustą listę * oznacza głowę listy. Zaczynamy od:

[*???]->NULL

Gdzie ??? byłaby po prostu fikcyjną zmienną dla nieużywanego elementu. Już marnujemy węzeł listy, gdy możemy po prostu to zrobić:

*NULL

Podobnie, jeśli sprawdzimy niepustą listę, możemy mieć w przypadku:

[*123]->[456]->[789]->[???]->NULL

... kiedy moglibyśmy po prostu:

[*123]->[456]->[789]->NULL

Oczywiście możesz to zwiększyć, aby nadpisaćta fikcyjna zmienna, gdy rozmiar listy zmienia się od 0 do 1, ale teraz wymaga dodatkowych rozgałęzień i tak dalej, w efekcie otrzymujemy bardziej złożone instrukcje i nakład pracy.

Robiąc to, naprawdę niewiele można zyskać, a potencjalnie dużo do stracenia.

W funkcjach dotyczących połączonych list dlaczego robimy Next of węzły zerowe i nie powodują, że węzeł jest pusty?

Nie rozumiałem tej części. Jeśli mówimy o umieszczeniu nowego węzła na liście, na przykład możemy to mieć

[new node: 456]->???      [*123]->NULL

Następnie wskazujemy na głowę:

[new node: 456]->[*123]->NULL

... a następnie skieruj głowę na nowy węzeł.

[*456]->[123]->NULL

Zwykle więc nie powinno być czasów, w których ustawiasz następny wskaźnik węzła na null, chyba że jest on skierowany do głowy, która jest zerowa, lub w odpowiedzi na usunięcie ogona.