class Stack[Q] (n: Int) {
private var S:Array[Q] = new Array[Q](n)
private var top = 0;
def push(elem: Q) {
top = top + 1
S(top) = elem
}
def pop () : Q = {
var oldtop = top
top = top - 1
S(oldtop)
}
}
var x = new Stack(3)
x.push(3)
x.push(4)
println(x.pop())
var y = new Stack[String](4)
y.push("C++")
y.push("Java")
println(y.pop())