条件が次のような制限付きキュー クラスを作成するように依頼されました。
プリミティブ型のみを使用して、境界付きキューを実装して整数を格納します。データ構造は、アルゴリズムの実行時間、メモリ使用量、およびメモリ スループットに対して最適化する必要があります。外部ライブラリをインポートしたり使用したりしないでください。ソリューションは、次の機能を提供する 1 つのクラスで提供する必要があります。
- コンストラクター - クラスは、整数を使用してキューのサイズを設定するオブジェクト作成用のメソッドを 1 つ提供する必要があります。
- 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;
}
}