gpt4 book ai didi

Java CircularArrayQueue isEmpty 方法

转载 作者:行者123 更新时间:2023-12-02 13:42:47 25 4
gpt4 key购买 nike

我正在尝试实现 CircularArrayQueue,当队列未填充时,我的方法 isEmpty() 返回 false。你能指出我的错误吗?

public CircularArrayQueue(int size)
{
array = new Integer[size];
front = rear = 0;
}

... code omitted

// returns the number of elements in the queue
@Override
public int noItems()
{
return array.length - getCapacityLeft();
}

// returns true if the queue is empty
@Override
public boolean isEmpty()
{
return noItems() == 0;
}

//returns the number of available spots in the queue before a resize needs to be done
public int getCapacityLeft()
{
return (array.length - rear + front)%array.length;
}

最佳答案

当队列初始化时,front和rear都为零。

public int getCapacityLeft()
{
return (array.length - rear + front)%array.length;
}

因此 getCapacityLeft 返回 (array.length + 0)%array.length 为零。

您需要正确计算项目数量,并考虑如何管理完整缓冲区和空缓冲区之间的差异 - 似乎在这两种情况下您都使用后==前。决定如何区分差异,然后可以编写一个 getCapacityLeft,如果缓冲区为空,则返回 array.length;如果缓冲区已满,则返回 0。

关于Java CircularArrayQueue isEmpty 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42643777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com