C++での循環キューデータ構造
キューは、要素のコレクションを含む抽象的なデータ構造です。キューはFIFOメカニズムを実装します。つまり、最初に挿入された要素も最初に削除されます。
キュー杖は1つの線形データ構造です。ただし、配列を使用してキューを実装すると、問題が発生する可能性があります。挿入と削除を連続して行うと、前後の位置が変わる場合があります。その瞬間、キューには要素を挿入するスペースがないように見えます。空きスペースがあっても、論理的な問題により使用されません。この問題を解決するために、循環キューのデータ構造を使用します。
循環キューは、最後の位置が最初の位置に接続されて円を描くタイプのキューです。
例
#include <iostream>
using namespace std;
int cqueue[5];
int front = -1, rear = -1, n=5;
void insertCQ(int val) {
if ((front == 0 && rear == n-1) || (front == rear+1)) {
cout<<"Queue Overflow \n";
return;
}
if (front == -1) {
front = 0;
rear = 0;
}
else {
if (rear == n - 1)
rear = 0;
else
rear = rear + 1;
}
cqueue[rear] = val ;
}
void deleteCQ() {
if (front == -1) {
cout<<"Queue Underflow\n";
return ;
}
cout<<"Element deleted from queue is : "<<cqueue[front<<endl;
if (front == rear) {
front = -1;
rear = -1;
}
else {
if (front == n - 1)
front = 0;
else
front = front + 1;
}
}
void displayCQ() {
int f = front, r = rear;
if (front == -1) {
cout<<"Queue is empty"<<endl;
return;
}
cout<<"Queue elements are :\n";
if (f <= r) {
while (f <= r){
cout<<cqueue[f]<<" ";
f++;
}
}
else {
while (f <= n - 1) {
cout<<cqueue[f]<<" ";
f++;
}
f = 0;
while (f <= r) {
cout<<cqueue[f]<<" ";
f++;
}
}
cout<<endl;
}
int main() {
int ch, val;
cout<<"1)Insert\n";
cout<<"2)Delete\n";
cout<<"3)Display\n";
cout<<"4)Exit\n";
do {
cout<<"Enter choice : "<<endl;
cin>>ch;
switch(ch) {
case 1:
cout<<"Input for insertion: "<<endl;
cin>>val;
insertCQ(val);
break;
case 2:
deleteCQ();
break;
case 3:
displayCQ();
break;
case 4:
cout<<"Exit\n";
break;
default: cout<<"Incorrect!\n";
}
}
while(ch != 4);
return 0;
} 出力
1)Insert 2)Delete 3)Display 4)Exit Enter choice : 1 Input for insertion: 10 Enter choice : 1 Input for insertion: 20 Enter choice : 1 Input for insertion: 30 Enter choice : 1 Input for insertion: 40 Enter choice : 1 Input for insertion: 50 Enter choice : 3 Queue elements are : 10 20 30 40 50 Enter choice : 2 Element deleted from queue is : 10 Enter choice : 2 Element deleted from queue is : 20 Enter choice : 3 Queue elements are : 30 40 50 Enter choice : 4 Exit
-
C++ストリームクラスの構造
C ++では、ストリームとは、プログラムスレッドとi/oの間で転送される文字のストリームを指します。 ストリームクラス C ++では、ファイルおよびioデバイスの入出力操作に使用されます。これらのクラスには特定の機能があり、プログラムの入出力を処理します。 iostream.h ライブラリは、C++プログラミング言語のすべてのストリームクラスを保持します。 階層を見て、それらについて学びましょう。 それでは、 iostreamのクラスについて学びましょう。 ライブラリ。 iosクラス −このクラスは、すべてのストリームクラスの基本クラスです。ストリームは、入力ストリームまた
-
ハーフエッジデータ構造
はじめに テンプレートパラメータまたはハーフエッジデータ構造(HalfedgeDSと略記)のHDSは、平面マップ、多面体、またはその他の方向付け可能な2次元など、頂点、エッジ、および面の入射情報を維持できるエッジ中心のデータ構造として定義されます。ランダムな次元に埋め込まれたサーフェス。各エッジは、反対方向の2つのハーフエッジに分割されます。各ハーフエッジには、1つの入射面と1つの入射頂点が格納されます。各面と各頂点に1つの入射ハーフエッジが格納されます。ハーフエッジデータ構造のバリエーションを減らすと、面のハーフエッジポインタや面の保存など、この情報の一部を削除できます。 ハーフエッジデ