実装のアイデア:
1)フロント= -1はキューヘッドの前の位置を指し、リア= -1はキューの最後を指し、maxSizeはキューの最大容量を初期化します
2)リア<maxSize-1は、キューがまだいっぱいでないことを示している場合、キューの最後にリア++を追加し続けることができます。
3)フロント==リアの場合、キューは空です
C#実装コード:
システムの使用; 名前空間のデータ構造 { パブリック クラスArrayQueue { static void Main(string [] args) { // キューを初期化します var queue = new ArrayQueue(5 ); 試す { queue.GetQueue(); } キャッチ { Console.WriteLine(" キューはまだ空です... \ n " ); } Console.WriteLine(" 开始入队... \ n " ); for(int i = 1 ; i <= 6 ; i ++ ) { queue.AddQueue(i); } Console.WriteLine(" \ n开始出队... \ n " ); for(int i = 1 ; i < 6 ; i ++ ) { Console.WriteLine(queue.GetQueue()); } 試す { queue.GetQueue(); } キャッチ { Console.WriteLine(" すべてはチームの外にいます... " ); } } #region配列モードキュー プライベート int maxSize; // キューの最大 プライベート intフロント; // キューヘッド プライベート intリア; // キューエンド プライベート int [] arrayQueue; // シミュレーションキューアレイ // 初期化キュー パブリック ArrayQueue(int maxSize = 1 ) { this .maxSize = maxSize; this .arrayQueue = new int [maxSize]; this .front = -1 ; // キューヘッドの前の位置を指す this .rear = -1 ; // キューの最後、キューの最後の位置を指す } // キューがいっぱいかどうかを確認します public bool IsFull() { return == maxSize- 1 ; } パブリック ブールIsEmpty() { フロントを返す == リア; } // 入队 public bool AddQueue(int item) { // (IsFull())の場合、キューはいっぱい です { Console.WriteLine(" キューがいっぱいです... " ); falseを返し ます。 } リア ++ ; arrayQueue [リア] = アイテム; trueを返し ます。 } // 出队 public int GetQueue() { // (IsEmpty())の場合、キューは空 です { スロー 新しい新しい IndexOutOfRangeExceptionザ・(「キューが空であります... 」); } フロント ++ ; arrayQueue [front]を返します。 } #endregion } }