Java podwójnie połączona lista

Java podwójnie połączona lista

Połączona lista jest rodzajem standardowej struktury danych, która składa się z kilku sąsiednich węzłów. Każdy węzeł chroni informacje i adres klastra po jej wejściu. Podwójnie połączona lista to odmiana linkowanej listy. Treść i dodatkowy wskaźnik, znany jako wcześniejszy wskaźnik, które są obecne na liście pojedynczej połączonej, są również obecne na podwójnie połączonej liście. Innymi słowy, podwójnie połączona lista może zapewnić możliwość poruszania się w obu kierunkach,.mi. wstecz i do przodu, podczas gdy pojedynczo połączona lista przesuwa się tylko w kierunku do przodu. W tym przewodniku omówimy, w jaki sposób możemy utworzyć podwójną listę w języku Java.

Przykład 01:

Rozpoczęcie pierwszego przykładu tego artykułu, zobaczymy, w jaki sposób podwójnie połączona lista może zostać utworzona w programowaniu Java w ciągu kilku sekund za pomocą kilku wierszy kodu. Kod podany poniżej można wykonać szczególnie w Eclipse IDE. Ten kod Java nie wymaga importowania żadnego pakietu Java przed rozpoczęciem nowej klasy.

Upewnij się, że nazwa klasę używaną w kodzie tak samo, jak nazwa pliku Java i.mi. "test". Główna klasa testowa zawiera wiele funkcji zdefiniowanych przez użytkownika wraz z strukturą klasy dzieci o nazwie „węzeł”, która jest wykorzystywana do utworzenia węzła. Klasa węzłów zawiera deklarację danych liczb całkowitych „D”, poprzedniego „P” i następnego kolejnego węzła „N” dla aktualnego węzła, który ma zostać utworzony. Ta klasa „węzła” zawiera również funkcję konstruktora „węzeł”, aby ustawić dane dla aktualnie utworzonego węzła. Węzeł główny „h” i węzeł ogonowy „t” został ustawiony na null. Począwszy od funkcji tego programu Main (), powiązana lista „L” została utworzona przy użyciu techniki tworzenia obiektów dla głównej klasy „testowej”. Wywołanie funkcji do funkcji „Dodaj” klasy „Test” zostało wykonane przy użyciu podwójnie połączonego obiektu „L”, aby dodać 5 wartości danych do podwójnie połączonej listy po drugiej.

Pamiętaj, aby dodać dane liczb całkowitych do podwójnie połączonej listy. Gdy funkcja „Dodaj” otrzyma wywołanie z wartością „D”, wykonuje funkcję dodawania, która rozpoczyna się od stworzenia nowego węzła „Newn”. Nadchodzi instrukcja IF-Else, aby sprawdzić, czy węzeł jest pusty, czy nie. Jeśli jest to „null”, węzeł głowy i ogona stanie się nowym węzłem, podczas gdy poprzedni i następny węzeł węzła głównego zostanie ustawiony na „Null” na razie. Poprzedni węzeł stanie się głowa, a następny węzeł stanie się ogonem. W przeciwnym razie część else zostanie wykonana, jeśli głowa nie jest „zerowa”. Tutaj węzły zostaną zamienione. Następny węzeł ogona stanie się nowym węzłem, a poprzedni węzeł nowego węzła „Newn” stanie się ogonem.

Jednocześnie węzeł ogona stanie się nowym węzłem, a następny ogon zostanie ustawiony na NULL. Kiedy funkcja show () zostanie wywołana funkcja „show” pod koniec funkcji add (). Tutaj zdefiniujemy bieżący węzeł jako węzeł „główny”. Jeśli nadal, węzeł główny jest zerowy, wyświetli się, że lista połączona jest pusta. W przeciwnym razie będzie nadal sprawdzać, czy bieżący węzeł jest zerowy, czy nie, a także wyświetlanie wartości danych „D” w tym konkretnym bieżącym węźle.

Na końcu tekst bieżącego węzła stanie się bieżącym węzłem dla następnego wywołania funkcji. Tutaj nasza funkcja Main () została zakończona po dodaniu i wyświetleniu podwójnie połączonych danych węzłów listy. Po prostu skopiujmy, wklejmy i uruchom ten kod Java, aby zobaczyć jego dane wyjściowe.

test pakietu;
Test klasy publicznej
Węzeł klasy
int d;
Węzeł p;
Węzeł n;
Node public (int d)
Ten.D = D;

Węzeł h, t = null;
public void add (int d)
Węzeł newn = nowy węzeł (d);
if (h == null)
h = t = newn;
H.p = null;
T.n = null;

w przeciwnym razie
T.n = newn;
Newn.p = t;
t = newn;
T.n = null;

public void show ()
Węzeł C = H;
if (h == null)
System.na zewnątrz.println („lista jest pusta”);
powrót;

System.na zewnątrz.println („Lista podwójnie połączona:”);
While (c != null)
System.na zewnątrz.Drukuj (c.D + "");
c = c.N;

public static void main (string [] args)
test l = nowy test ();
L.Dodaj (11);
L.Dodaj (62);
L.Dodaj (23);
L.Dodaj (14);
L.Dodaj (45);
L.Pokazywać();

Po wykonaniu tego kodu w Eclipse IDE, wszystkie 5 wartości danych na podwójnie połączonej liście „L” zostały wyświetlone w tej samej kolejności. Dodaliśmy je bez zmian w kolejności. Należy zauważyć, że jeśli nie użyliśmy funkcji „dodaj”, aby dodać dane do podwójnie połączonej listy, mógłby wyświetlić, że podwójnie połączona lista jest obecnie pusta.

Przykład 02:

Spójrzmy na kolejny przykład Javy. Będziemy nie tylko wyświetlić sposób na utworzenie nowego węzła, ale także sposób na usunięcie węzłów od węzłów początkowych i końcowych i poruszanie się w obu kierunkach. Począwszy od głównej funkcji tego kodu, utworzyliśmy podwójnie połączony obiekt „L” dla typów liczb całkowitych i deklarujemy głowę, ogon i rozmiar do „0” dla listy powiązanej. 2 funkcje wywołuje funkcję „AddF”, która doprowadzi do tymczasowego tworzenia węzła „Temp”. Jeśli głowa nie jest zerowa, ustawym poprzednią głowę jako węzeł „temp”. W przeciwnym razie głowa stanie się „temp”, a jeśli ogon jest zerowy, stanie się węzłem „temp”.

Na wywołanie funkcji do funkcji „Addl” doprowadzi do dodania węzła elementu danych po lewej stronie bieżącego węzła za pomocą podobnego sposobu przyjęcia do dodania węzła po prawej stronie. Warunki zastosowane w oświadczeniach „jeśli” zostaną odwrócone tym razem. Połączenie funkcji „MoveFor” prowadzi do przodu na podwójnie połączonej liście. Po przejściu do przodu wypróbowaliśmy wywołanie funkcji do funkcji „RMVF” i „RMVL” w celu usunięcia właśnie dodanych węzłów danych na pierwszej i ostatniej liście podwójnie połączonej.

test pakietu;
Importuj Java.Util.NosuchelementException;
Test klasy publicznej
Węzeł prywatny H;
Węzeł prywatny t;
prywatny rozmiar int;
public test ()
rozmiar = 0;

prywatny węzeł klasowy
T D;
Węzeł n;
Węzeł p;
Node public (T D, węzeł N, węzeł P)
Ten.D = D;
Ten.n = n;
Ten.p = p;

public int size ()
Rozmiar powrotu;
public boolean isEmpty ()
Rozmiar powrotu == 0;
public void addf (t d)
Węzeł temp = nowy węzeł (d, h, null);
if (h != null)
H.p = temp;

H = temp;
if (t == null)
t = temp;

Rozmiar ++;
System.na zewnątrz.println („Dodanie d:”+d);

public void addl (t d)
Węzeł temp = nowy węzeł (d, null, t);
if (t != null)
T.n = temp;

t = temp;
if (h == null)
H = temp;

Rozmiar ++;
System.na zewnątrz.println („Dodawanie danych:”+d);

public void MoveFor ​​()
System.na zewnątrz.println („Iteraing Forward.");
Węzeł temp = h;
When (temp != null)
System.na zewnątrz.println (temp.D);
temp = temp.N;

public void MoveBack ()
System.na zewnątrz.println („Iteraing Backword.");
Węzeł temp = t;
When (temp != null)
System.na zewnątrz.println (temp.D);
temp = temp.P;

public t rmvf ()
if (rozmiar == 0) Rzuć nowy nosuchelementException ();
Węzeł temp = h;
h = h.N;
H.p = null;
rozmiar--;
System.na zewnątrz.println („usunięte d:”+temp.D);
Return Temp.D;

public t rmvl ()
if (rozmiar == 0) Rzuć nowy nosuchelementException ();
Węzeł temp = t;
t = t.P;
T.n = null;
rozmiar--;
System.na zewnątrz.println („Usunięte dane:”+temp.D);
Return Temp.D;

public static void main (string args [])
próbować
test l = nowy test ();
L.Addf (2);
L.Addf (26);
L.Addl (11);
L.MoveFor ​​();
L.Rmvf ();
L.Rmvl ();
L.Cofnąć się();
catch (wyjątek er)
ER.printStackTrace ();

Po wykonaniu dodano 2 węzły na początku i 2 węzły w punkcie końcowym podczas przesuwania się do przodu wszystkich danych węzła zostały wyświetlone. Dwa węzły zostały usunięte, a dane ostatniego węzła zostały wyświetlone po przejściu do tyłu.

Wniosek

Korzystanie z podwójnie połączonej listy jest bardzo powszechne wśród programistów Java do poruszania się i pracy w obu kierunkach. Oprócz tego przykłady Java są najważniejszą ważną częścią tego artykułu w celu omówienia sposobu utworzenia podwójnie połączonej listy za pomocą danych, poprzednich, bieżących i następnych węzłów itp.