Untitled
unknown
csharp
2 years ago
4.9 kB
8
Indexable
namespace Lista_jakas_nowa
{
public class ElementListy2D
{
private int Wartość; // Wartość do zapamiętania
//jak dwukietunkowa musi miec referencje na lewo i na prawo
private ElementListy2D Poprzedni;
private ElementListy2D Następny;
public ElementListy2D (int x)
{
Wartość = x;
Poprzedni = null;
Następny = null;
}//Koniec konstruktora
public void DodajDoKońca(int x)
{
if(Następny == null)
{
Następny = new ElementListy2D(x, this);
}
else
{
Następny.DodajDoKońca(x);
}//endif
}//Koniec dopisywania do końca listy
public ElementListy2D(int x, ElementListy2D poprzednik)
{
Wartość = x;
Poprzedni= poprzednik;
Następny = null;
}//koniec drugiego konsturktora
public void PokażListęOdPrzodu()
{
Console.Write(Wartość);
if(Następny==null)
{
Console.WriteLine();
}
else
{
Console.Write(", ");
Następny.PokażListęOdPrzodu();
}//koniec if
}//Koniec pokazywania od przodu
// DO tyłu trzeba wykożystać poprzedniki a nie długość listy
public void PokażListęOdTyłu(ElementListy2D ogon)
{
if(ogon == null)
{
Console.WriteLine("Nie podano ostatgniego elementu listy");
}
else
{
Console.Write(Wartość);
if (Poprzedni == null)
{
Console.WriteLine() ;
}
else
{
Poprzedni.PokażListęOdTyłu(Poprzedni);
}//endif
}//endif
}//koniec pokazywania listy do tyłu
public ElementListy2D getOgonIteracyjnie()
{
ElementListy2D wynik;
wynik = this;
while(wynik.getNastępnik() != null)
{
wynik=wynik.getNastępnik();
}
return wynik;
}
protected ElementListy2D getNastępnik()
{
return Następny;
}
public ElementListy2D getOgonRekurencyjnie()
{
ElementListy2D wynik;
wynik = null;
if(Następny != null)
{
wynik=Następny.getOgonRekurencyjnie();
}
else
{
wynik=this;
}//endif
return wynik;
}//Koniec getOgonRekurencyjnie
public bool Sprawdź(int x)
{
bool wynik;
wynik = Wartość == x;
if(wynik == false)
{
if(Następny!= null)
{
wynik=Sprawdź(x);
}//endif
}//endif
return wynik;
}//Koniec wyszukiwania
public void UsunListe()
{
Poprzedni = null;
if(Następny!=null)
{
Następny.UsunListe();
}//endif
Następny= null;
}//Koniec usuwania listy
}//Koniec listy
//Rekurencyjnie nie musze łamac Hermetyzacji
static public class TestyListy2D
{
static void Main(string[] args)
{
Random generator;
int Ile;
ElementListy2D głowa;
ElementListy2D ogon;
int szukana_wartosc;
int i;
Ile = 20;
int x;
szukana_wartosc = 5;
generator = new Random();
głowa = null;
ogon = null;
for(i = 9; i< Ile; i++)
{
x = generator.Next(Ile);
if (głowa == null)
{
głowa = new ElementListy2D(x);
}
else
{
głowa.DodajDoKońca(x);
}//endif
}
Console.WriteLine("Lista od początku: ");
głowa.PokażListęOdPrzodu();
ogon = głowa.getOgonIteracyjnie();
Console.WriteLine("Lista od końca, ogon - iteracyjnie");
głowa.PokażListęOdTyłu(ogon);
ogon = głowa.getOgonRekurencyjnie();
Console.WriteLine("Lista od końca, ogon - rekurencyjnie");
głowa.PokażListęOdTyłu(ogon);
Console.ReadKey();
}
}
}
Editor is loading...
Leave a Comment