You are on page 1of 2

public class Kopiec

{
Jednokierunkowa lista;
Comparator komparator;
public Kopiec(Comparator komparator){
lista=new Jednokierunkowa();
this.komparator=komparator;
}
public void dodaj(Object wartosc){
lista.dodaj(wartosc);
wynurz(lista.rozmiar());
}
private void wynurz(int element){
int rodzic=element/2;
while(element != 1 && komparator.Compare(lista.daj(rodzic),lista.daj(el
ement))<0){
zamien(lista,rodzic,element);
element=rodzic;
rodzic=element/2;
}
}
private void zamien (Lista lista,int index1,int index2){
Object tmp=lista.daj(index1);
lista.ustaw(lista.daj(index2),index1);
lista.ustaw(tmp,index2);
}
public Object pobierz(){
Object tmp=lista.daj(1);
if(lista.rozmiar()>1){
lista.ustaw(lista.daj(lista.rozmiar()),1);
zatop(1);
}
lista.usun(lista.rozmiar());
return tmp;
}
private void zatop(int element){
boolean flaga=false;
int potomek=2*element;
while(!flaga && potomek <=lista.rozmiar()){
if(potomek < lista.rozmiar() && komparator.Compare(lista.daj(potomek
),lista.daj(potomek+1))<0)
potomek++;
if(komparator.Compare(lista.daj(element),lista.daj(potomek))<0)
zamien(lista,element,potomek);
else
flaga=true;
element=potomek;
// potomek=2*element;

}
}
public boolean CzyPusty(){
return lista.czyPusta();
}
public int rozmiar(){
return lista.rozmiar();
}
public String toString(){
return lista.toString();
}
}

You might also like