/*---------------------------------------------------------------->
独習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;
}