Lista - Google

Lista

Z Wikipedii

Skocz do: nawigacji, szukaj
Przykład listy wskaźnikowej łączonej jednostronnie
Przykład listy wskaźnikowej łączonej jednostronnie

Lista - rodzaj kontenera, dynamiczna struktura danych używana w infomatyce składająca się z podstruktur wskazujących na następniki i/lub poprzedniki.


Spis treści

[edytuj] Popularne sposoby łączenia elementów listy

Typowa lista jest łączona jednostronnie - komórki zawierają tylko odnośnik do kolejnej komórki. Innym przypadkiem jest lista dwustronna, gdzie komórki zawierają także odnośnik do poprzednika.

Popularna jest także lista zwana słownikową, która zazwyczaj jest wariacją listy jednostronnej. Z reguły stosuje się ją tam, gdzie elementy listy zawierają kilka pól z danymi, a kolejny element może rozszerzać pojęcie (definicję poprzedniego). Przykładem jest prosty translator tekstu, zrealizowany jako lista, gdzie każdy z elementów zawiera dane wyraz i definicja wyrazu - może się okazać, że definicja danego wyrazu ma swoje rozwinięcie (definicję) w pewnym innym elemencie, wówczas tam kieruje się dodatkowy łącznik.

[edytuj] Implementacja listy

Istnieją dwie popularne implementacje struktury listy: tablicowa i wskaźnikowa.

[edytuj] Tablicowa

Jak wskazuje nazwa, lista zaimplementowana w ten sposób opiera się na tablicy obiektów (lub rekordów) danego typu.

Dopisanie elementu do listy to wstawienie elementu do tablicy:

  • jeÅ›li ma ono nastÄ…pić na koÅ„cu listy, bÄ™dzie to kolejny element w tablicy;
  • jeÅ›li nowy element ma znaleźć siÄ™ miÄ™dzy innymi elementami, należy przesunąć o jedno pole w prawo wszystkie elementy o indeksie wyższym niż pole, na które bÄ™dzie wstawiany obiekt; nastÄ™pnie w powstałą lukÄ™ wpisuje siÄ™ nowy element.

Usunięcie elementu znajdującego się pod danym indeksem tablicy to przesunięcie o jedno pole w lewo wszystkich elementów o indeksie wyższym.

Zalety tej implementacji: prosta nawigacja wewnątrz listy, korzystanie z gotowej struktury tablicy, szybki dostęp do elementu o konkretnym numerze, większa odporność na błędy. Wady: niska elastyczność, szczególnie dotycząca rozmiaru tablicy, złożoność operacji wstawiania i usuwania.

Implementację tablicową stosuje się tam, gdzie elastyczność nie odgrywa istotnej roli, a wymagana jest szybka i prosta nawigacja.

[edytuj] Wskaźnikowa

W tej implementacji każdy obiekt na liście musi (co nie było konieczne w wersji tablicowej) zawierać dodatkowy element: wskaźnik do innego obiektu tego typu. Wynika to z faktu, że to wskaźniki są podstawą nawigacji w tym typie listy, a dostęp do jej elementów jest możliwy wyłącznie przez wskaźnik.

Dopisanie elementu (dla prostej listy jednostronnej):

  • jeÅ›li ma ono nastÄ…pić na koÅ„cu listy, to wskaźnik wiążący w obiekcie ostatnim ustawia siÄ™ na nowy obiekt danego typu;
  • jeÅ›li ma ono nastÄ…pić wewnÄ…trz listy, to najpierw tworzy siÄ™ nowy obiekt danego typu i jego wskaźnik wiążący ustawia siÄ™ na nastÄ™pnik elementu, za którym ma być wstawiany. Później wskaźnik poprzednika przestawia siÄ™ na ten nowy obiekt. W tym przypadku bardzo ważna jest kolejność, której zachwianie jest czÄ™stÄ… przyczynÄ… błędów. Np. można najpierw przestawić wskaźnik poprzednika na nowy obiekt, co spowoduje bezpowrotnÄ… utratÄ™ dostÄ™pu do dalszych elementów listy, na które już nie bÄ™dzie pokazywaÅ‚ żaden wskaźnik. Ustawienie wskaźnika nowego elementu na nastÄ™pnik nie bÄ™dzie możliwe, bo nie bÄ™dzie znany jego adres.

Usunięcie elementu jest odwrotne do wstawiania: w pewnym miejscu zapisuje się wskaźnik do usuwanego elementu (aby nie "zgubić" jego adresu), następnie wskaźnik wiążący poprzednika przestawia się na następnik, i dopiero w tym momencie zwalnia się pamięć po obiekcie usuwanym (do tego potrzebny jest ten wskaźnik tymczasowy).

Zalety i wady tej implementacji sÄ… komplementarne w stosunku do implementacji tablicowej.

Wgłębiając się w szczegóły implementacji listy za pomocą wskaźników można wyróżnić następujące rodzaje list:

  • lista jednokierunkowa - w każdym elemencie listy jest przechowywane odniesienie tylko do jednego sÄ…siada (nastÄ™pnika lub poprzednika).
  • lista dwukierunkowa - w każdym elemencie listy jest przechowywane odniesienie zarówno do nastÄ™pnika jak i poprzednika elementu w liÅ›cie. Taka reprezentacja umożliwia swobodne przemieszczanie siÄ™ po liÅ›cie w obie strony.
  • lista cykliczna - nastÄ™pnikiem ostatniego elementu jest pierwszy element, a poprzednikiem pierwszego ostatni. Po liÅ›cie można wiÄ™c przemieszczać siÄ™ cyklicznie. Nie ma w takiej liÅ›cie charakterystycznego ogona (ani gÅ‚owy), czÄ™sto rozpoznawanego po tym, że jego nastÄ™pnik jest pusty (NULL).
  • lista z wartownikiem - lista z wyróżnionym elementem zwanym wartownikiem. Jest to specjalnie oznaczony element niewidoczny dla programisty wykorzystujÄ…cego listÄ™. Pusta lista zawiera wtedy tylko wartownika. Zastosowanie wartownika znacznie upraszcza implementacjÄ™ operacji na listach.

Powyższe cechy można prawie dowolnie łączyć, co daje możliwość stworzenia wielu różnych implementacji listy, zależnie od potrzeb.

[edytuj] Zobacz też

Commons

Powódź na Podkarpaciu - zginął 35-latek
Z powodu intensywnych opadów deszczu i burz, które przeszły nad powiatem bieszczadzkim (Podkarpackie) i wezbrania lokalnych potoków powyżej zbiornika wodnego w Solinie, tamtejszy starosta wprowadził wieczorem alarmy powodziowe dla gmin: Lutowiska i Czarna.
"Rozgrywającym ws. ustawy medialnej była lewica"
Platforma Obywatelska prowadziła arogancką politykę w zakresie ustawy medialnej w stosunku do SLD - twierdzi poseł niezrzeszony Maciej Płażyński.
Lubelskie: pogotowie przeciwpowodziowe
Wisła w Annopolu (Lubelskie) przekroczyła po południu stan alarmowy o 4 cm. W niżej położonych Puławach, poziom wody w rzece zbliżył się do stanu ostrzegawczego.
Lepper o Sejmie: to żenujące, kompromitacja
Andrzej Lepper, przewodniczący Samoobrony oświadczył w Olsztynie, że to, co dzieje się w Sejmie "jest żenujące", a "kłótnia między rządem, a pałacem prezydenckim kompromituje Polskę w oczach świata".
"Nie prowadzimy nagonki na Kurskiego i Wassermanna"
"Gazeta Wyborcza" nie prowadzi nagonki na posłów PiS Jacka Kurskiego i Zbigniewa Wassermanna. Wydaje się, że wyroki w procesach między "Gazetą" a nimi były sprawiedliwe - uważa z-ca redaktora naczelnego "Gazety" Piotr Pacewicz.
Linki: Strona g³ówna