环形队列实现-scala语言描述
package datastructer.queue
object CircleArrayQueue {
def main(args: Array[String]): Unit = {
}
}
class ArrayQueue2(arrMaxSize:Int){
val maxSize = arrMaxSize
val arr = new Array[Int](maxSize)
var front = 0
var tear = 0
def isEmpty():Boolean={
front == tear
}
def isFull():Boolean={
(tear +1)%maxSize == front
}
def addNum(num:Int):Unit={
if(isFull()){
println("队列满,添加失败")
return
}
arr(tear) = num
tear = (tear+1) % maxSize
}
def getNum():Any={
if(isEmpty()){
new Exception("队列空,取数据失败")
}
val num = arr(front)
front = front +1
num
}
def show():Unit={
if(isEmpty()){
println("队列空,无数据")
}
for(i <- front until getSize()){
printf("arr(%d)=%d \t",(i%maxSize),arr(i%maxSize))
}
}
def getSize():Int = {
(tear+maxSize-front)%maxSize
}
}