def enqueue(elem: T): Unit = {
A(rear) = elem
rear += 1
size += 1
if (size == 0) {
front = 0
rear = 0
}
if (size == A.length) {
grow()
}
}
我正在使用数组实现队列,我在enqueue方法中遇到了一些问题,但我无法弄清楚错误的确切位置。那么请你给我一些关于我犯错误的提示。 在上面的代码中,size是arrayqueue中元素的数量,grow是在数组满时将数组加倍的函数。提前谢谢。
答案 0 :(得分:2)
你没有告诉任何错误,所以这是一个黑暗的镜头,而不是讨论所选择的数据结构。
测试size == 0
似乎没用,在enqueue
之后,大小不会为零。然而,你所做的就是告诉你在出列队列时你做了什么,可能会在front
返回元素并递增front
,然后递减size
。
所以一些评论
总结:在入队开始时,如果后面是阵列长度,你必须
答案 1 :(得分:2)
如果您要测试size == 0
,则应首先进行测试。
如果您记录类的不变量以及方法的前提条件和后置条件,以确保每个方法都保留了队列实现内部的关键属性,它可能会对您有所帮助。见http://en.wikipedia.org/wiki/Design_by_contract。
不变量可能类似于大小总是小于或等于数组长度或 size> = 0 。