目前我正在使用队列,并且一直在编写一种将元素添加到队列中的入队方法。每当队列已满时,我都会返回一条消息,指出队列无法插入更多元素。现在我的任务是更改入队方法,每当尝试插入元素时,将数组大小限制加倍,以便理论上该项目将被添加到新的扩展数组中,并且永远不会失败到完整队列中。我怎样才能实现这一目标,任何事情都有帮助。
代码
public void enqueue(Object newItem){
if (!isFull()){
back = (back+1) % QUEUE_SIZE;
items[back] = newItem;
count++;
return;
} else
System.out.println("Trying to enqueue into full queue");
}
最佳答案
您可以创建一个大小为 items
双倍的新数组,然后从 items
复制所有项目并再次调用您的 enqueue
方法.
public void enqueue(Object newItem){
if (!isFull()){
...
} else {
Object[] newItems = new Object[items.length * 2];
copyFromTo(items, newItems);
items = newItems;
enqueue(newItem);
}
}
关于java - 当队列已满时增加数组大小的入队方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43421630/