Untitled
unknown
csharp
2 years ago
4.9 kB
6
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