Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SuperStack[T] {
- private var list: List[T] = List[T]()
- def push(x : T) {
- list = x::list
- println("hui1")
- }
- def pop(): T = list match {
- case x::list => x
- case Nil => throw new IllegalStateException("SuperStack is empty")
- }
- def empty(): Boolean = list.isEmpty
- }
- object SuperStack {
- implicit class SuperStackNumeric[T](stack : SuperStack[T])(implicit n: Numeric[T]) {
- private var min: List[T] = List[T]()
- private var max: List[T] = List[T]()
- def push(x : T) {
- max = x :: max
- min = x::min
- println("hui2")
- if(stack.list.isEmpty) {
- println("hui")
- max = x::max
- min = x::min
- }else {
- /* if(stack.list.last > max.last) {
- max = stack.list.last::max
- } else {
- max = max.last::max
- }
- if(stack.list.last < min.last) {
- min = stack.list.last::min
- } else {
- min = min.last::min
- }*/
- }
- stack.list = x::stack.list
- }
- def minf() = max.size
- def maxf() = max.last
- def average(): Double = n.toDouble(stack.list.reduceRight(n.plus))/stack.list.length
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement