I_R_W13A_M03_JAVA Zaawansowane struktury danych
Klasa LinkedList
Klasa LinkedList implementuje interfejsy Queue, Deque oraz List za pomocą listy dwukierunkowej, której elementami są węzły. Klasa udostępnia wszystkie opcjonalne metody wspomnianych interfejsów, m.in.:
add()– zadaniem metody jest dodawanie elementu na końcu listy;remove()– metoda usuwa pierwszy element listy;peek()– metoda zwraca pierwszy element bez usuwania go;addLast()– zadaniem metody jest dodawanie elementu na końcu listy;addFirst()– metoda odpowiada za dodawanie elementu na początku listy;removeLast()– metoda usuwa ostatni element listy;removeFirst()– zadaniem metody jest usuwanie pierwszego elementu listy;peekLast()– metoda zwraca ostatni elementu listy bez usuwania go;peekFirst()– działanie metody polega na zwracaniu pierwszego elementu listy bez usuwania go;get(index)– metoda zwraca węzeł o podanym indeksie bez usuwania go;isEmpty()– metoda podaje informację, czy lista jest pusta;size()– metoda odpowiada za podanie rozmiaru listy.
Przykładowy program:
Na początku tworzy obiekt lista, który posłuży do przechowywania wartości typu int (liczby całkowite). Następnie dodajemy na końcu listy dwie liczby (add(), addLast()), następnie jedną na początku (addFirst()), po czym wypisujemy rozmiar (size()) oraz pierwszy (peekFirst()) i ostatni (peekLast()) element.
Następnie usuwamy ostatni element (removeLast()) oraz wypisujemy rozmiar, pierwszy i ostatni element listy.
Na końcu przy użyciu pętli wykonującej się, dopóki lista nie jest pusta (isEmpty()), wypisujemy kolejne pierwsze elementy (peek()) i usuwamy je (remove()). Na końcu wypisujemy jeszcze raz aktualny rozmiar listy.
Wynik działania programu:
Słownik
zestaw interfejsów i klas, które implementują najczęściej używane struktury danych, czyli kolekcje, np. stos, kolejka, lista; mimo określenia framework omawiany zestaw traktować można jak bibliotekę zawierającą gotowe do użycia implementacje
definiowany przez użytkownika złożony typ danych, który pozwala grupować logicznie powiazane dane oraz funkcje wykonujące na nich operacje; składowe klasy nazywamy polami, funkcje zdefiniowane w klasie nazywa się metodami
metoda o takie samej nazwie jak klasa, która służy do nadawania wartości początkowych jej polom; w języku Java klasa może mieć wiele konstruktorów dzięki mechanizmowi przeciążania
(ang. stack underflow) – rodzaj błędu występującego kiedy program próbuje zdjąć wartość z pustego stosu.
(ang. stack overflow) – rodzaj błędu polegającego na przekroczeniu rozmiaru pamięci zarezerwowanej dla stosu.
zmienna zawierająca informacje o położeniu jakiejś wartości (obiektu) w pamięci; referencje zarządzane są przez kompilator lub interpreter, a nie przez programistę, dzięki czemu są bezpieczniejsze niż wskaźniki; referencje mogą być puste, co znaczy, że nie wskazują na żaden obiekt, w języku Java wyraża to wartość null, w języku Python None
zmienna przechowująca adres innej zmiennej lub obiektu, pozwalająca na bezpośredni dostęp do pamięci; możliwe jest tworzenie wskaźników pustych, które na nic nie wskazują