public static void Main()
SpojovySeznam<int> seznam = new SpojovySeznam<int>();
seznam.PridejPrvniPolozku(1);
Polozka<int> moje = seznam.PridejPolozku(0);
Console.WriteLine("vypisuji polozku ulozenou do promenne: aktualni-{0} predchozi-{1} nasledujici-{2}",
moje.AktualniHodnota, moje.PredchoziPolozka.AktualniHodnota, moje.NasledujiciPolozka.AktualniHodnota);
Console.WriteLine("---------------------");
Console.WriteLine("---------------------");
Console.WriteLine("---------------------");
seznam.OdstranJednuZa(moje);
seznam.PridejZa(moje, 999);
public Polozka<T> PredchoziPolozka{get; set;}
public T AktualniHodnota{get; set;}
public Polozka<T> NasledujiciPolozka{get; set;}
public Polozka<T> JdiNaNasledujiciPolozku()
return NasledujiciPolozka;
public Polozka<T> JdiNaPredchoziPolozku()
public bool PorovnejPolozky(Polozka<T> polozka)
return this.Equals(polozka);
public class SpojovySeznam<T> where T: IComparable
Polozka<T> PrvniPolozka{get;set;}
Polozka<T> PosledniPolozka{get;set;}
public void PridejPrvniPolozku(T neco)
PrvniPolozka = new Polozka<T>(neco);
PosledniPolozka = PrvniPolozka;
public Polozka<T> PridejPolozku(T neco)
Polozka<T> polozka = new Polozka<T>(neco);
polozka.PredchoziPolozka = PosledniPolozka;
PosledniPolozka.NasledujiciPolozka = polozka;
PosledniPolozka = polozka;
public void NajdiPolozku(Polozka<T> polozka)
Polozka<T> p = PrvniPolozka;
while (!p.PorovnejPolozky(PosledniPolozka))
if(!p.PorovnejPolozky(polozka))
Console.WriteLine("vypisuji polozku: {0}", p.AktualniHodnota);
p = p.NasledujiciPolozka;
if (p.PorovnejPolozky(polozka))
Console.WriteLine("vypisuji polozku: {0}", p.AktualniHodnota);
public Polozka<T> NajdiHodnotu(T neco)
Polozka<T> p = PrvniPolozka;
while (!p.AktualniHodnota.Equals(neco))
p = p.NasledujiciPolozka;
Console.WriteLine("nasel jsem shodu v hodnote: {0}", p.AktualniHodnota);
public void VypisVsechny()
NajdiPolozku(PosledniPolozka);
public void Odstran(Polozka<T> polozka)
polozka.JdiNaNasledujiciPolozku().PredchoziPolozka = polozka.JdiNaPredchoziPolozku();
polozka.JdiNaPredchoziPolozku().NasledujiciPolozka = polozka.JdiNaNasledujiciPolozku();
public void PridejZa(Polozka<T> p, T neco)
Polozka<T> polozka = new Polozka<T>(neco);
polozka.PredchoziPolozka = p;
polozka.NasledujiciPolozka = p.NasledujiciPolozka;
p.NasledujiciPolozka.PredchoziPolozka = polozka;
p.NasledujiciPolozka = polozka;
public void OdstranJednuZa(Polozka<T> polozka)
polozka=polozka.JdiNaNasledujiciPolozku();