数据结构与算法_栈

 

 

 

 

 

 

 

package chapter05

object test02 {

  def main(args:Array[String]):Unit={
    val stack = new ArrayStack(4)

    stack.push(1)
    stack.push(2)
    stack.push(3)
    stack.push(4)
    stack.push(5)
    stack.list()

    val res=stack.pop()
    if(res.isInstanceOf[Exception]) {
      println(res.asInstanceOf[Exception].getMessage)
    }else{
      println(res)
    }

    stack.peek()

  }

}



class ArrayStack(maxSize:Int){

  val arrs = new Array[Int](maxSize)

  var top = -1

  def isFull():Boolean={
    top == maxSize-1
  }

  def isEmpty():Boolean={
    top == -1
  }

  def push(num:Int):Unit={
    if(isFull()){
      println("栈已满,无法插入")
      return
    }
    top += 1
    arrs(top) = num
  }

  def list():Unit={
    if(isEmpty()){
      println("栈为空,无法遍历")
      return
    }

    for(i <- 0 to top reverse){
      printf("%d %d\n" ,i,arrs(i))
    }
  }

  def pop():Any={
    if(isEmpty()){
      return new Exception("栈空")
    }
    val res = arrs(top)
    top -= 1
    return res
  }

  def peek():Unit={
    if(isEmpty()){
      println("栈已空,无法取出")
    }
    println(arrs(top))
  }



}

 

 

 

posted on 2020-08-27 16:29  happygril3  阅读(107)  评论(0)    收藏  举报

导航