Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Java: řazení celých čísel pomocí prioritní fronty implementované seznamem: pomoc

Ahoj, snažím se naprogramovat program pro řazení celých čísel pomocí prioritní fronty implementované seznamem.

Můj problém je v tom, že mi fronta nevypisuje čísla od největšího, ale nějak na přeskáčku, nechápu proč, může mi někdo poradit prosím?

Koukám tu do toho půl dne a nic nevykoukám.

public class MainApp {


	public static void main(String[] args) {

		int[] poleindexu = {9,1,8,5,4};

		PF intf = new PF();

		for (int i = 0; i < poleindexu.length; i++) {
			intf.vloz(poleindexu[i]);
		}
		
		while (!intf.jePrazdna()) {
		System.out.println(intf.vybermax());
		}

	}

}
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;

	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.dalsi != 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;
	}
}
Předmět Autor Datum
To bude tím, že tam žádnou prioritní frontu nemáš. Při vkládání by ti vkládaný prvek měl probublat n…
Wikan 24.04.2013 20:36
Wikan
for (Prvek t = x.dalsi; t.dalsi != hlavicka; t = t.dalsi) zmen na for (Prvek t = x.dalsi; t != hla…
x22 24.04.2013 21:29
x22
Děkuji oboum za rady, algoritmus nyní funguje, díky..!:-) poslední
MetrixLHL 24.04.2013 22:06
MetrixLHL

Zpět do poradny Odpovědět na původní otázku Nahoru