Dobrý den, mám problém s tímto programem :/ Je to předepsaný program, který správně funguje, ale nevím si rady s významem s metodou vloz(), proč tento řádek "posledni = posledni.dalsi = new Uzel(vkladany);" přepíše i objekt "prvni",přesto že se tam vůbec o "prvni" nejedná, a zrovna i tu správnou větev "dalsi" ? Prosím o vysvětlení...
Pro lepší pochopení programu je tady zadání:
"Vytvořte třídu SpojovySeznam, která umí uchovávat prvky typu Object. Připravte metody void vloz(Object obj), Object vyjmiPrvniho() a void vypisSeznam()."
// univerzalni spojovy seznam
class Uzel {
Object prvek;
Uzel dalsi;
Uzel(Object o) {
prvek = o;
dalsi = null;
}
Uzel(Object o, Uzel dalsiUzel) {
prvek = o;
dalsi = dalsiUzel;
}
Object getPrvek() {
return prvek;
}
Uzel getDalsi() {
return dalsi;
}
}
class SpojovySeznam {
private Uzel prvni, posledni;
int pocet;
SpojovySeznam() {
prvni = posledni = null;
pocet = 0;
}
public boolean jePrazdny() {
return (prvni == null) ? true : false;
}
// vklada na konec
public void vloz(Object vkladany) {
if (jePrazdny() == true)
prvni = posledni = new Uzel(vkladany);
else
posledni = posledni.dalsi = new Uzel(vkladany);
pocet++;
}
public void vypisSeznam() {
Uzel akt = prvni;
while (akt != null) {
System.out.println(akt.prvek.toString());
akt = akt.dalsi;
}
System.out.println("Pocet prvku: " + pocet);
}
public Object vyjmiPrvniho() {
Object o;
if (jePrazdny() == true)
return null;
pocet--;
o = prvni.prvek;
if (prvni != posledni)
prvni = prvni.dalsi;
else
prvni = posledni = null;
return o;
}
public int getPocet() { return pocet; }
}
public class SpojovySeznamTest {
public static void main(String[] args) {
SpojovySeznam s = new SpojovySeznam();
Integer i = new Integer(1);
Double d = new Double(3.14);
String a = "ahoj";
s.vloz(i);
s.vloz(d);
s.vloz(a);
s.vypisSeznam();
s.vyjmiPrvniho();
s.vypisSeznam();
}
}