#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int QueueSize=100;
template<class DataType>
class CirQueue
{private:
DataType data[QueueSize];
int front,rear;
public:
CirQueue()
{
front=rear=QueueSize-1;
}
void EnQueue(DataType x);
DataType DeQueue();
DataType GetQueue();
int Empty()
{if(front==rear)
return 1;
else
return 0;
}
};
template<class DataType>
void CirQueue<DataType>::EnQueue(DataType x)
{
if((rear+1)%QueueSize==front)
throw("上溢");
rear=(rear+1)%QueueSize;
data[rear]=x;
}
template<class DataType>
DataType CirQueue<DataType>::DeQueue()
{
if(front==rear)
throw"下溢";
front=(front+1)%QueueSize;
return data[front];
}
template<class DataType>
DataType CirQueue<DataType>::GetQueue()
{
if(rear==front)
throw"下溢";
int i=(front+1)%QueueSize;
return data[i];
}
int main()
{
CirQueue<int>q;
q.EnQueue(1);
q.EnQueue(2);
q.EnQueue(3);
cout<<q.DeQueue()<<endl;
cout<<q.DeQueue()<<endl;
cout<<q.GetQueue()<<endl;
}
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
template<class DataType>
struct Node
{DataType data;
Node<DataType>*next;
};
template<class DataType>
class LinQueue
{
private:
Node<DataType>*front;
Node<DataType>*rear;
public:
LinQueue();
~LinQueue(){}
void EnQueue(DataType x);
DataType DeQueue();
DataType GetQueue();
int Empty()
{
if(front==rear)
return 1;
else
return 0;
}
};
template<class DataType>
LinQueue<DataType>::LinQueue()
{
Node<DataType>*s;
s=new Node<DataType>;
s->next=NULL;
front=rear=s;
}
template<class DataType>
void LinQueue<DataType>::EnQueue(DataType x)
{
Node<DataType>*s;
s=new Node<DataType>;
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}
template<class DataType>
DataType LinQueue<DataType>::DeQueue()
{
Node<DataType>*p;
if(front==rear)
throw"下溢";
p=front->next;
DataType x=p->data;
front->next=p->next;
if(p->next==NULL)
rear=front;
delete p;
return x;
}
template<class DataType>
DataType LinQueue<DataType>::GetQueue()
{
return front->next->data;
}
int main()
{
LinQueue<int>q;
q.EnQueue(1);
q.EnQueue(2);
q.EnQueue(3);
q.DeQueue();
q.DeQueue();
}