Trochu jsem na tom zapracoval a nevím, jestli je to úplně v pořádku, podle zadání...
class PF {
private class Prvek {
int klic;
Prvek dalsi;
Prvek predch;
Prvek() {
}
Prvek(int klic) {
this.klic = klic;
this.dalsi = null;
this.predch = null;
}
}
private Prvek hlavicka;
public PF() {
hlavicka = new Prvek();
hlavicka.dalsi = hlavicka;
hlavicka.predch = hlavicka;
}
boolean jePrazdna() {
return (hlavicka.dalsi == hlavicka.dalsi.dalsi);
}
void vloz(int klic) {
Prvek novy = new Prvek(klic);
novy.dalsi = hlavicka.dalsi;
novy.predch = hlavicka;
hlavicka.dalsi.predch = novy;
hlavicka.dalsi = novy;
}
int vybermax() {
Prvek x = hlavicka.dalsi;
for (Prvek t = x.dalsi; t != hlavicka; t = t.dalsi)
if (x.klic < t.klic) {
x = t;
}
int max = x.klic;
x.predch.dalsi = x.dalsi;
x.dalsi.predch = x.predch;
return max;
}
}
public class Hlavni {
public static void main(String[] args) {
int[] poleindexu = {9,1,8,5,4,10,3,7,2,6,11,15,13,19};
PF intf = new PF();
for (int i = 0; i < poleindexu.length; i++) {
intf.vloz(poleindexu[i]);
}
while (!intf.jePrazdna()) {
System.out.println(intf.vybermax());
}
}
}