C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのキューの配列実装


キューは、操作の順序がFIFO(先入れ先出し)である線形データ構造です。

配列は、同じデータ型の要素を含むデータ構造であり、連続したメモリ位置に格納されます。

キューでは、キューの両端で行われる挿入および削除操作。実装は、スタックと比較して少し複雑です。

キューの配列実装では、topとendの2つの変数を持つサイズnの配列キューを作成します。

現在、最初は配列は空です。つまり、先頭と末尾の両方が配列の0インデックスにあります。そして、要素がキューに追加されると、(挿入) 終了変数の値が増加します。 endの値は、nまで増加する可能性があります。つまり、配列の最大長です。

要素をキューから削除する場合(削除) 、一番上の変数の値が増加します。 topの値は、endの値まで上がる可能性があります。

キュー操作の実装

エンキュー −キューに要素を追加するための操作です。キューに要素を追加する前に、キューがいっぱいかどうかを確認します。終了を確認する条件。n未満の場合は、queue[end]に要素を保存できます。そして、endを1増やします。

オーバーフロー状態は、配列がいっぱいになったとき、つまりend==nのときです。

デキュー −キューの要素を削除する操作です。キューの要素を削除する前に、キューが空かどうかを確認します。キューが空かどうかをチェックする条件で、topとendの値がチェックされます。 top ==endの場合、配列は空です。

要素がある場合は、配列をデキューします。配列の左側にあるすべての要素を1つシフトします。

フロント −キューの最初の要素、つまりarray[top]を抽出します。この操作は、アレイが空でない場合にのみ実行できます。

表示 −この操作は、キューのすべての要素を表示します。つまり、キューをトラバースします。

アルゴリズム

ENQUEUE :
Step 1 : if (end == n), print : “OVERFLOW”. Exit
Step 2 : queue[end] = data and end++
DEQUEUE :
Step 1 : If (top == 0), print : “empty Queue”. Exit
Step 2 : shift all elements one position left. End-- ;

#include <bits/stdc++.h>
using namespace std;
struct Queue {
   int top, end, n;
   int* queue;
   Queue(int c){
      top = end = 0;
      n = c;
      queue = new int;
   }
   ~Queue() { delete[] queue;
}
void Enqueue(int data){
   if (n == end) {
      printf("\nQueue is full\n");
      return;
   }
   else {
      queue[end] = data;
      end++;
   }
   return;
}
void Dequeue(){
   if (top == end) {
      printf("\nQueue is empty\n");
      return;
   }
   else {
      for (int i = 0; i < end - 1; i++) {
         queue[i] = queue[i + 1];
      }
      end--;
   }
   return;
}
void Display(){
   int i;
   if (top == end) {
      printf("\nQueue is Empty\n");
      return;
   }
   for (i = top; i < end; i++) {
      printf(" %d <-- ", queue[i]);
   }
   return;
}
void Front(){
   if (top == end) {
      printf("\nQueue is Empty\n");
      return;
   }
   printf("\nFront Element is: %d", queue[top]);
   return;
}
};
int main(void){
   Queue q(4);
   q.Display();
   q.Enqueue(12);
   q.Enqueue(89);
   q.Enqueue(65);
   q.Enqueue(34);
   q.Display();
   q.Enqueue(92);
   q.Display();
   q.Dequeue();
   q.Dequeue();
   q.Display();
   q.Front();
   return 0;
}

出力

Queue is Empty
12 <-- 89 <-- 65 <-- 34 <--
Queue is full
12 <-- 89 <-- 65 <-- 34 <-- 65 <-- 34 <--
Front Element is: 65

  1. JavaScriptでのキューの実装

    以下は、JavaScriptでキューを実装するためのコードです。 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>  

  2. 配列を使用してキューを実装するC++プログラム

    キューは、要素のコレクションを含む抽象的なデータ構造です。キューはFIFOメカニズムを実装します。つまり、最初に挿入された要素も最初に削除されます。つまり、最近追加された要素がキューの最初に削除されます。 配列を使用してキューを実装するプログラムは次のとおりです- 例 #include <iostream> using namespace std; int queue[100], n = 100, front = - 1, rear = - 1; void Insert() {    int val;    if (rear == n -