#include<stdio.h>
#include <iostream.h>
#include <windows.h>
#define FOR if(1) for
template <class T>
class Queue
{
public:
Queue( int size )
{
count = 0;
maxsize = size;
front = rear = 0;
m_pBuff = new T[size];
{
if( empty() )
return;
count--;
front = (front+1) % maxsize;
{
if( full() )
return;
count++;
m_pBuff[rear] = tar;
rear = (rear+1) % maxsize;
{
return m_pBuff[ (front+index)%maxsize ];
}
bool empty() { return count==0; }
bool full() { return count==maxsize; }
private:
int count;
int maxsize;
int front;
int rear;
T* m_pBuff;
};
void main()
{
Queue<int> q(5);
int c = 5;
while (1)
{
FOR (int i=0; i<5; i++)
{
q.push(i);
}
FOR (int i=0; i<5; i++)
{
cout<<q[i]<<" ";
}
cout<<endl;
q.pop();
q.push(c++);
Sleep(1000);
}
cout<<endl;
}
#include <iostream.h>
#include <windows.h>
#define FOR if(1) for
template <class T>
class Queue
{
public:
Queue( int size )
{
count = 0;
maxsize = size;
front = rear = 0;
m_pBuff = new T[size];
}
void pop(){
if( empty() )
return;
count--;
front = (front+1) % maxsize;
}
void push(const T& tar){
if( full() )
return;
count++;
m_pBuff[rear] = tar;
rear = (rear+1) % maxsize;
}
const T& operator [] (const int index){
return m_pBuff[ (front+index)%maxsize ];
}
bool empty() { return count==0; }
bool full() { return count==maxsize; }
private:
int count;
int maxsize;
int front;
int rear;
T* m_pBuff;
};
void main()
{
Queue<int> q(5);
int c = 5;
while (1)
{
FOR (int i=0; i<5; i++)
{
q.push(i);
}
FOR (int i=0; i<5; i++)
{
cout<<q[i]<<" ";
}
cout<<endl;
q.pop();
q.push(c++);
Sleep(1000);
}
cout<<endl;
}