Javaを使用してループキューを実装する方法:
1.現在の要素の数を記録する属性サイズを追加します。
目的は、head =リアの場合です。サイズ= 0またはサイズ=配列長。キューを空であると区別するため、またはキューがいっぱいです。
2.配列サイズ-1要素のみが配列に保存され、背を向けた後、背面が頭に等しくないことを保証します。それがキューがいっぱいのときです。リア+1 =ヘッド、中央に1つの要素だけがあります。
リア=ヘッドの場合。キューは空でなければなりません。
キューの両端で合意した操作の種類は異なります。
削除できる終わりはチームのヘッドと呼ばれ、そのような操作はDequeueとも呼ばれます。
挿入できる端はチームの尾と呼ばれ、そのような操作はEnqueueとも呼ばれます。
キューの概略図
キューを実装するときは、誤ったオーバーフロー現象に注意を払う必要があります。上の最後の写真に示されているように。
図に見られるように、偽のオーバーフロー
解決策:チェーンストレージを使用します。順次保存するとき。私たちの一般的な解決策は、それを最後に接続し、円形のキューを形成することです。これにより、キューのストレージスペースを最大限に活用できます。
ループキュー図:
上の写真。フロントはキューの最初の要素を指します。リアポイントキューの最後の次の位置を指します。
しかし、まだ問題があります。フロントとリアが同じ位置を指している場合、これはチームが空または満員であることを意味しますか?あなたはそのような状況を想像することができます。
この問題を解決するための一般的な慣行は次のとおりです。
このような混乱する状況を区別するためにマークが使用されます。
元素空間を犠牲にします。フロントとリアが等しい場合、それらは空です。後部の次の位置が正面にあるとき。いっぱいです。
たとえば、次の図:
以下にループキューを示し、別の方法、つまり、空のチームとフルチームを区別するための要素スペースを犠牲にします。
いくつかの重要なポイント:
1.フロントはチームの長を指します。チームの終わりにおける次のポジションをリアポイントします。
2。チームが空であるという推論:front ==後部;チームがいっぱいであるという推論:(後部+1)%maxsize ==フロント。
java.io.*をインポートします。 public class queearray {object [] a; //オブジェクト配列、キューはa.length-1オブジェクトint frontまで保存します。 //最初のsubscript int Rearから。 //終了から添え字のpublic queearray(){this(10); //他のコンストラクターを呼び出す} public queearray(int size){a = new object [size]; front = 0;リア= 0; } / ***キューの終わりにオブジェクトを追加* @param objオブジェクト* @return return queueがいっぱいの場合はfalse、そうでなければtrue* / public boolean enqueue(object obj){if((rece+1)%a.length == front){return false; } a [Lear] = obj;リア=(リア+1)%a.length; trueを返します。 } / ***キューのヘッドの最初のオブジェクトはdequeued* @@returnキューが空のときにdequeued* / public object dequeue(){if(rece == front){return null; }オブジェクトobj = a [front]; front =(front+1)%a.length; OBJを返します。 } public static void main(string [] args){queearray q = new Queearray(4); System.out.println(q.enqueue( "Zhang San")); system.out.println(q.enqueue( "li si")); System.out.println(q.enqueue( "zhao wu")); System.out.println(q.enqueue( "wang yi")); //キューを入力できません。キューは(int i = 0; i <4; i ++){system.out.println(q.dequeue()); }}}Javaアレイに基づいて円形のキューを実装する2つの方法の上記の概要は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。