
Pokud si chcete vyzkouset samy - zadani: napiste FIFO frontu s metodami - add pro pridani prvku, remove pro odebrani prvku a jeho vraceni, removeAll pro vyprazdneni cele fronty a length pro zjisteni poctu prvku ve fronte

Takze jedno mozne reseni

Vnitrni struktura bude pomoci jednosmerne zretezeneho spojoveho seznamu, zakladni stavebni kamen:
- Kód: Vybrat vše
class Zaznam {
public Zaznam next;
public Object data;
}
Vlastni trida obsahuje 2 promenne odkazujici na zacatek a konec fronty:
- Kód: Vybrat vše
public class Queue {
private Zaznam First;
private Zaznam Last;
Konstruktor je jednoduchy - jen nastavit null
- Kód: Vybrat vše
public Queue() {
First = null;
Last = null;
}
Metoda pro pridani objektu do fronty - pokud je fronta prazdna nastavim first i last na prvek, jinak jen pridam za posledni prvek a prepisu last.
- Kód: Vybrat vše
public void add(Object o) {
Zaznam z = new Zaznam();
z.data = o;
z.next = null;
if (Last == null) {
First = z;
Last = z;
return;
}
Last.next = z;
Last = z;
return;
}
metoda odstrani z fronty a vrati prvni prvek. Pokud je fronta prazdna pak null:
- Kód: Vybrat vše
public Object remove() {
if (First == null)
return null;
Object ret = First.data;
First = First.next;
if (First == null)
Last = null;
return ret;
}
Vyprazdneni cele fronty je jednoduche - vse udela garbage collector

- Kód: Vybrat vše
public void removeAll() {
First = null;
Last = null;
// o zbytek se postara garbage collector
}
metoda zjisti pocet prvku ve fronte:
- Kód: Vybrat vše
public int length() {
int len = 0;
Zaznam iterator = First;
while (iterator != null) {
len++;
iterator = iterator.next;
}
return len;
}
No a pak jeste nejaka mala testovaci funkce main ze nam to funguje

- Kód: Vybrat vše
public static void main(String[] args) {
Queue q = new Queue();
q.add(new Integer(12));
q.add(new Integer(5));
System.out.println(q.length());
q.remove();
System.out.println(q.length());
q.add(new Integer(27));
q.removeAll();
System.out.println(q.length());
}
}
Pro hloubave duse - premyslejte nad zlepsenimi / jinacim pristupem


nekdy priste u dalsi casti naschle Ariczek.