|
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.
|