循環キュー Java

WBOY
リリース: 2024-08-30 15:08:27
オリジナル
566 人が閲覧しました

次の記事では、循環キュー Java の概要を説明します。循環キューは線形データ構造であり、操作は単純なキューと同様に FIFO (先入れ先出し) 方式で実行されます。循環キューでは、最後のポジションが最初のポジションに接続され、円を描きます。リングバッファとも呼ばれます。単純なキュー構造では、後部がキューの最後に到達した場合、つまりキューがいっぱいになった場合、先頭要素のスペースが空で利用できない可能性があります。このキューの制限は、CIrcular キューによって解決されます。このトピックでは、循環キュー Java について学習します。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文:

以下に、Java プログラムで循環キューを使用する基本的な構文を示します。

Java で循環キューを作成し、その動作を行う方法は?

循環キューの作成と動作について詳しく理解しましょう:

CIrcular Queue で実行される基本的な操作を以下に示します。

  1. フロント: キューの最初の要素を指すために使用されます。
  2. 後部: キューの最後の要素を指すために使用されます。
  3. Enqueue(value): キューに要素を挿入するために使用される関数です。キュー内の要素は後ろの位置に挿入されます。
  4. Dequeue(): この関数は、キューの要素を削除するために使用されます。キューの基本的な性質として、要素の削除はキューの先頭から行われます。

循環キュー内の要素を作成、挿入、または削除するときに実行する手順は次のとおりです。

  • 初期状態では、フロントとリアの値は -1 に設定されています。
  • エンキュー (値) 操作中:
  • キューに最初の要素を挿入すると、フロントとリアの両方が 0 に設定されます。
  • キューに新しい要素を挿入すると、後部は後部 + 1 になります。
  • リアの位置に新しい要素が追加されます。
  • 後部は循環的に増分されます。つまり、最後尾に到達してキューがいっぱいになると、キューの先頭を指します。
  • デキュー操作中:
  • まず、キューが空かどうかを確認します。フロント == リア == -1 の平均は、キューが空であることを意味し、削除は実行できません。
  • キューに要素が 1 つだけある場合 (つまり、front == Rear)、要素を削除し、front == Rear == -1 を設定します。
  • キュー内に要素がある場合、front で指定された値が削除され、循環的にfront インデックスが 1 ずつ増加します。

循環キューで作業するときは、次のシナリオに留意する必要があります:

  1. フロント = 0、リア = サイズ -1 の場合、キューはいっぱいです。これは、フロントが最初の位置を指し、リアが最後の位置を指していることを意味します。そのため、キューがいっぱいで挿入できません。
  2. フロント = リア + 1 の場合、キューはいっぱいです。つまり、多数の削除の後、フロントがキューの位置 3 にあり、循環挿入後のリアがキューの位置 2 にある場合、リストはいっぱいです。これ以上挿入することはできません。
  3. フロント!= 0 およびリア = max-1 の場合、キューはいっぱいではありません。これは、キューの先頭に空の位置があるため、挿入を行うことができることを意味します。
  4. rear!= size-1 の場合、mod(size) を使用して後部をさらに増分できるため、新しい値を挿入できます。

以下は、Java プログラムでの循環キューの実装を示す例です。

  • キューへの要素の挿入
  • 空のキューのアイテムを表示
  • キューへの要素の挿入
  • キューからの要素の削除
  • 完全なキューに要素を挿入する
  • キューの要素を前後の位置とともに表示します。
public class CirQueue {
// Defining the size of Circular Queue
int SIZE = 5;
int front, rear;
int queue[] = new int[SIZE];
//creating the constructor of the above class
CirQueue() {
front = -1;
rear = -1;
}
// Implementing the 2 scenarios to check if the queue is full or not
boolean isFullQueue() {
if (front == 0 && rear == SIZE - 1) {
return true;
}
if (front == rear + 1) {
return true;
}
return false;
}
// Check if the queue is empty or not
boolean isEmptyQueue() {
if (front == -1)
return true;
else
return false;
}
// Adding an element in the queue
void enQueue(int value) {
if (isFullQueue()) {
System.out.println("Sorry !! Queue is full.. No more elements could be inserted in it");
}
else {
// if there is no element in the queue
if (front == -1)
front = 0;
// incrementing the rear position in circular manner using modulo operator
rear = (rear + 1) % SIZE;
//placing the value at the rear position
queue[rear] = value;
System.out.println("Element " + value + " is inserted successfully");
}
}
// Deleting the element from the queue
void deQueue() {
int value;
// checking of the queue is empty or not
if (isEmptyQueue()) {
System.out.println("Sorry !!The Queue is empty.. ");
} else {
value = queue[front];
// if there is only one element in the queue
if (front == rear) {
front = -1;
rear = -1;
}
else {
// Incrementing the front in a circular manner
front = (front + 1) % SIZE;
}
}
}
// Displaying the elements of the Circular queue
void displayQueue() {
int i;
if (isEmptyQueue()) {
System.out.println("Sorry!! The Queue is Empty");
} else {
System.out.println("Position of Front:  " + front);
System.out.println("Below given are the elements of the Queue");
for (i = front; i != rear; i = (i + 1) % SIZE)
System.out.print(queue[i] + " ");
System.out.println(queue[i]);
System.out.println("Position of Rear: " + rear);
}
}
// Main function to drive the code
public static void main(String[] args) {
// creating the object of the class to call the methods
CirQueue que = new CirQueue();
// Queue is empty. No element is inserted as of now
que.deQueue();
que.enQueue(10);
que.enQueue(24);
que.enQueue(33);
que.enQueue(67);
que.enQueue(22);
que.displayQueue();
que.deQueue();
que.displayQueue();
que.enQueue(900);
que.displayQueue();
// Element cannot be inserted as the queue is full
que.enQueue(867);
que.deQueue();
que.displayQueue();
}
}
ログイン後にコピー

出力:

循環キュー Java

以下は、循環キューでさまざまな挿入と削除を行った後の出力のスクリーンショットです。

結論

上記の説明は、CIrcular Queue とは何か、そしてそれが任意のプログラミング言語でどのように機能するかを明確に説明しています。循環キューは、通常のキューの制限を解決するために導入されました。作業を始める前に、プログラマはまずキューを理解し、実際のプログラムでの実装を理解することが非常に重要です。

以上が循環キュー Javaの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート