scala 数组模拟队列

package DataStruct
//使用队列实现排队(数组出现越界)
import scala.io.StdIn

object QueueDemo {
  def main(args: Array[String]): Unit = {
    val queue = new ArrayQueue(20)
    var key = ""
    while(true){
      println("show:表示显示队列")
      println("exit:表示退出队列")
      println("add:请输入一个数")
      println("get:取出一个数据")

      key = StdIn.readLine()
      key match{
        case "show" => queue.showQueue()
        case "add" => {
          println("请输入一个数")
          val value = StdIn.readInt()
          queue.addQueue(value)
        }
        case "get" => {
          val res = queue.getQueue()
          if(isInstanceOf[Exception]){
           println(res.asInstanceOf[Exception].getMessage)
          }
          else{
            println(s"取出数据是$res")
          }
        }
        case "exit" => System.exit(0) //不满足条件,退出(使用系统函数退出)
      }
    }
  }
}

//使用数组模拟队列
class ArrayQueue(arrMaxSize:Int){
    val maxSize = arrMaxSize
    val arr = Array[Int](maxSize)
    var front = -1  //头部,指向队列数据的前一个位置
    var rear = -1   //尾部,..

  //判断队列是否满
  def isFull():Boolean={
    rear == maxSize - 1
  }

  //判断队列对否为空
  def isEmpty(): Boolean={
    front == rear
  }
  //展示队列
  def showQueue(): Unit ={
    if(isEmpty()){
      println("队列没有数据")
      return
    }
    else
       for(i <- front+1  to rear){
         printf("arr[%d]=%d",i,arr(i))
       }
    println()
  }
  //添加数据
  def addQueue(n:Int): Unit ={
    //判断队列是否满,满就不能加数据
    if(isFull()){
      println("队列满,无法添加数据")
      return
    }
    else {
      rear += 1
      arr(rear) = n
    }
  }

  //取出数据
  def getQueue():Any ={
    if(isEmpty()){

      return new Exception("队列空")
    }
    else
      {
        front += 1
        return arr(front)
      }
  }

}

 

队列的添加功能:只能添加一个数据,添加第二个数据报错,求解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值