头文件 MyQueue.h
#ifndef MYQUEUE_H #define MYQUEUE_H class MyQueue { public: MyQueue(int queueCapacity); virtual ~MyQueue(); void ClearQueue(); bool QueueEmpty() const; int QueueLength() const; bool EnQueue(int element); bool DeQueue(int &element); void QueueTraverse(); private: int * Queue; //队列数组指针 int QueueLen; //队列元素个数 int QueueCapacity; //队列数组容量 int Head; int Tail; }; #endif
//头文件的实现MyQueue.cpp
#include"MyQueue.h" #include<iostream> using namespace std; MyQueue::MyQueue(int queueCapacity) { QueueCapacity = queueCapacity; Queue = new int[QueueCapacity]; ClearQueue(); } MyQueue::~MyQueue() { delete []Queue; Queue = NULL; } void MyQueue::ClearQueue() { Head = 0; Tail = 0; QueueLen = 0; } bool MyQueue::QueueEmpty() const { if(QueueLen == 0) { return true; } else { return false; } //QueueLen == 0 ? true : false; } bool MyQueue::QueueFull() const { if(QueueLen == QueueCapacity) { return true; } else { return false; } } int MyQueue::QueueLength() const { return QueueLen; } bool MyQueue::EnQueue(int element) { if(QueueFull()) { return false; } else { Queue[Tail] = element; Tail++; Tail = Tail % QueueCapacity; QueueLen++; return true; } } bool MyQueue::DeQueue(int &element) { if(QueueEmpty()) { return false; } else { element = Queue[Head]; Head++; Head = Head % QueueCapacity; QueueLen++; return true; } } void MyQueue::QueueTraverse() { for(int i = Head; i < QueueLen + Head; ++i) { cout << Queue[i % QueueCapacity] << endl; } }