我被要求创建一个有界队列类,其条件如下:
仅使用原始类型,实现有界队列来存储整数。数据结构应该针对算法运行时间、内存使用和内存吞吐量进行优化。不应导入和/或使用任何外部库。解决方案应以提供以下功能的一类交付:
- 构造函数 - 类应该提供一种创建对象的方法,该方法需要一个整数来设置队列的大小。
- enqueue - 如果队列未满,函数应该取一个整数并将其存储在队列中。该函数应正确处理队列已满的情况。
- dequeue - 如果当前存储在队列中,函数应该返回一个整数。该函数应正确处理队列为空的情况。
我写了这门课,但我想通过让别人测试它来寻求帮助,看看它是否能正常工作。我写了一个小的主类来测试它,一切似乎都在工作,但我希望在提交之前用另一双眼睛看看它。是为了实习。先感谢您。
public class Queue<INT>
{
int size;
int spacesLeft;
int place= 0;
int[] Q;
public Queue(int size)
{
this.size = size;
spacesLeft = size;
Q = new int[size];
}
//enqueue - function should take an integer and store it in the queue if the queue isn't full.
//The function should properly handle the case where the queue is already full
public void enque(int newNumber) throws Exception
{
if(place <= size)
{
Q[place] = newNumber;
place++;
spacesLeft--;
}
else
throw new Exception();
}
//dequeue - function should return an integer if one is currently stored in the queue.
//The function should properly handle the case where the queue is empty.
public int deque() throws Exception
{
int dequeNum;
if(spacesLeft == size)
throw new Exception();
else
{
dequeNum = Q[0];
spacesLeft++;
}
int[] tempAry = new int[size];
for (int i=0; i < Q.length; i++)
{
if(i < size-1)
{
tempAry[i] = Q[i+1]; // put in destination
}
}
Q = tempAry;
for(int i = 0; i < Q.length; i++)
{
System.out.println("value in Q"+Q[i]);
}
return dequeNum;
}
}