//queue.h class Queue { public: Queue(); ~Queue(); bool InQuene(int element);//入队 bool OutQuene();//出队 void PrintQuene(); bool EmptyprintQuene(); private: int *data; //数据数组 int front; //队首 int rear; //队尾 int MAX; //队列长度 };
#include<iostream> #include"queue.h" using namespace std; Queue::Queue() { int maxsize; cout << "请输入队列的长度:"; cin >> maxsize; data = new int[maxsize+1];//队列从front+1到rear,也就是说front不包含,rear包含 front = 0; rear = 0; MAX = maxsize; } Queue::~Queue() { delete data; } bool Queue::InQuene(int element) { if (((rear + 1) % (MAX+1)) == front)//循环队列上溢出 { cout << "队列已满,无法入队" <<endl; return false; } rear = (rear + 1) % (MAX + 1); data[rear] = element; cout << "元素" << data[rear] << "入队!" << endl;; } bool Queue::OutQuene() { if (EmptyprintQuene()) { cout << "队列为空,无法出队!" << endl; return false; } front = (front + 1) % (MAX + 1); cout << "元素" << data[front] << "出队!"<<endl; } void Queue::PrintQuene() { int temp = front; if (EmptyprintQuene()) { cout << "队列元素为: 队列为空!" <<endl; return; } cout << "队列元素为: "; temp = (temp + 1) % (MAX + 1); while (temp!=rear) { cout << data[temp] << " "; temp = (temp + 1) % (MAX + 1); } cout << data[temp] << endl; } bool Queue::EmptyprintQuene() { return front==rear; } int main() { Queue q; q.InQuene(1); q.InQuene(2); q.InQuene(3); q.InQuene(4); q.PrintQuene(); q.OutQuene(); q.PrintQuene(); q.OutQuene(); q.PrintQuene(); q.OutQuene(); q.PrintQuene(); q.OutQuene(); q.InQuene(4); q.InQuene(5); q.InQuene(6); q.PrintQuene(); return 0; }