trait MyQueue[T] {
def insert(x:T):Unit
def check:Boolean
def top: T
def pop: Unit
}
import scala.collection.mutable._
class Queue[T<:Comparable[T]]( val L: Array[T]) extends MyQueue[T]{
var size:Int = 0
def top():T={
if(size == 0) throw new Exception("Pusty kopiec")
else
L(0)
}
def swap(pos1:Int, pos2:Int){
var temp:T = L(pos1)
L(pos1) = L(pos2)
L(pos2) = temp
}
def insert(x:T)={
if(size == 101) throw new Exception("Pelny kopiec")
if(size == 0){
L(0) = x //= new Element(x,p)
size = size + 1
}
else {
L(size) = x
var pos = size
size = size + 1
while(x.compareTo(L((pos-1)/2)) > 0){
swap(pos, (pos-1)/2)
pos = pos/2
}
}
}
def pop()={
if(size == 0) throw new Exception("Pusty kopiec")
else{
var pos:Int = 0
size = size - 1
swap(pos,size)
if(size != 0)
while(pos*2+1<size && pos*2+2>= size &&(L(pos).compareTo(L(pos * 2 + 1)) < 0) || pos*2+2<size &&((L(pos).compareTo(L(pos * 2 + 1)) < 0) || (L(pos).compareTo(L(pos * 2 + 1)) < 0))){
if(pos*2+1 < size && pos*2+2>= size)
swap(pos,pos*2+1)
else{
if(L(pos * 2 + 1).compareTo(L(pos * 2 + 2)) > 0){
swap(pos, pos * 2 + 1)
pos = pos * 2 + 1
}
else{
swap(pos, pos * 2 + 2)
pos = pos * 2 + 2
}
}
}
}
}
def check()={
size == 0
}
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}