Lista w Javie
Janusz Sobieraj - 28 LO

Implementacja własnej listy w Javie

Utworzymy klasę Stos ( zamiast klasy Stack dokumentacja Javy)- strukturę , podobną do tej, którą wykorzystamy w zadaniach "błądzenie losowe". Notatki o węzłach przebytej trasie będziemy robili na obiektach klasy Punkt ( zamiast klasy Point dokumentacja Javy ).

Ale jako się rzekło, wszystko "robimy sami". W prezentowanych zadaniach potrzeby mamy raczej nieduże : dokładać do stosu, zdejmować ze stosu ( zdjęcie elementu ze stosu będzie oznaczało jego fizyczną likwidację ).

Przydatne będzie sprawdzanie czy węzeł już był na naszej drodze oraz liczbę odwiedzonych węzłów. Oto wymienione klasy:
public class Stos 
{ 
  class Wezel
  { 
    Punkt element; 
    Wezel nastepny; 

    public Wezel() 
    { 
      element = new Punkt(0,0); 
      nastepny = null; 
    } 
  } 
//----------------------------------------------
  private int ile; 
  private Wezel pierwszy; 

  public Stos() 
  { 
    pierwszy = null; 
    ile = 0; 
  } 
//----------------------------------------------
  public boolean nalezy(Punkt pkt)
  { 
    Wezel ciag; 
    ciag = pierwszy; 
    while(ciag != null) 
     { 
      if(ciag.element.x==pkt.x&&ciag.element.y==pkt.y) 
      return true; 
      ciag = ciag.nastepny; 
     } 
    return false; 
  } 
//----------------------------------------------
  public void na_poczatek(Punkt nowy)
  { 
    Wezel w_nowy = new Wezel( ); 
    w_nowy.nastepny = pierwszy; 
    w_nowy.element = nowy; 
    pierwszy = w_nowy; 
    ile++; 
  } 
//----------------------------------------------
  public int liczba() 
  { 
   return ile; 
  } 
//----------------------------------------------
  public Punkt zdejmij() 
  { 
    Wezel ostatni=pierwszy; 
    if(ostatni==null) return null; 
    pierwszy=pierwszy.nastepny; 
    ile--; 
    return ostatni.element; 
  } 
} 

package liceum28; 
public class Punkt 
{ 
  public int x,y; 
  public void Punkt(int wx,int wy)
  { 
   this.x=wx;this.y=wy; 
  } 
//-----------------------------
  public void war(int nx,int ny)
  { 
   x=nx; y=ny; 
  } 
}

W Javie nie ma wskaźników, rolę łączników w strukturze pełnią odnośniki
(u nas pole : nastepny) .

Każdy węzeł stosu jest klasą rekurencyjną, zawiera właśnie odnośnik do następnego węzła stosu. Dodatkowo węzeł o nazwie pierwszy "wskazuje" na początek stosu. W ten sposób uzyskujemy możliwość nawigacji po stosie, co jest ważne np dla funkcji nalezy oraz zdejmij.