[B]クラス 独習C++練習問題1.5.3


/*---------------------------------------------------------------->
独習C++
練習問題1.5.3
-------------------------------------------------------->
整数の循環キューを管理するキューのクラスを作成しなさい。
キューのサイズを整数100個の大きさにします。
このクラスの動作を確認するために、
単純なmain()関数を追加します。
------------------------------------------------------------------>*/

#include<iostream>
using namespace std;

#define SIZE_QUEUE 100

class Queue{
int buff[ SIZE_QUEUE ];
int head;
int tail;

public:
Queue();
void Enqueue( int num );
int Dequeue();
};

Queue::Queue(){

for( int i = 0 ; i < SIZE_QUEUE ; i++ ) buff[ i ] = -1;
head = 0;
tail = 0;
}

void Queue::Enqueue( int num ){

if( tail == head && buff[head] != -1 ){
cout << "\nキューが一杯です";
return;
}

buff[ tail ] = num;

tail++;
if( tail == SIZE_QUEUE ) tail = 0;
}

int Queue::Dequeue(){
if( tail ==  head && buff[ head ] == -1 ){
cout << "\nキューは空です";
return 0;
}
int ans = buff[ head ];
buff[ head ] = -1;

head++;
if( head == SIZE_QUEUE ) head = 0;

return ans;
}

int main(){

Queue q1,q2;

cout << "エンキューのテスト\n";
for( int i = 0; i<=100; i++ ){
q1.Enqueue( i );
q2.Enqueue( 200 + i );
}

cout << "デキューのテスト";
for( int i = 0 ; i<=100; i++ ){
cout << "\nDequeue:\t" << q1.Dequeue() << ":\t" << q2.Dequeue();
}

getchar();
return 0;
}