環形佇列——對int型別的資料進行操作
阿新 • • 發佈:2018-12-27
#ifndef MYQUEUE_H #define MYQUEUQ_H class MyQueue { public: MyQueue(int queueCapacity); //InitQueue(&Q) 建立佇列 virtual ~MyQueue(); //DestroyQueue(&Q) 銷燬佇列 void CleanQueue(); //CleanQueue(&Q)清空佇列 bool QueueEmpty() const; //QueueEmpty(Q) 判空佇列 bool QueueFull() const; //QueueFull()判滿佇列 int QueueLength() const; //QueueLength(Q)佇列長度 bool EnQueue(int element); //EnQueue(&Q element) 新元素入隊 bool DeQueue(int &element); //DeQueue(&Q &element) 首元素出隊 void QueueTraverse(); //QueueTraverse(Q visit()) 遍歷佇列 private: int *m_pQueue; //佇列陣列指標 int m_iQueueLen; //佇列元素個數 int m_iQueueCapacity; //佇列陣列容量 int m_iHead; //隊頭 int m_iTail; //隊尾 }; #endif// MYQUEUE_H#include #include #include "MyQueue.h" using namespace std; MyQueue::MyQueue(int queueCapacity) { m_iQueueCapacity=queueCapacity; m_pQueue=new int[m_iQueueCapacity]; CleanQueue(); } MyQueue::~MyQueue() { delete[] m_pQueue; m_pQueue =NULL; } void MyQueue::CleanQueue() { m_iHead=0; m_iTail=0; m_iQueueLen=0; } bool MyQueue::QueueEmpty() const { if(m_iQueueLen==0) { return true; } else { return false; } /*return m_iQueueLen == 0 ? true : false;*/ } int MyQueue::QueueLength() const { return m_iQueueLen; } bool MyQueue::QueueFull() const { if(m_iQueueLen==m_iQueueCapacity) { return true; } else { return false; } } bool MyQueue::EnQueue(int element) { if(QueueFull()) { return false; }else { m_pQueue[m_iTail]=element; m_iTail++; m_iTail=m_iTail%m_iQueueCapacity; m_iQueueLen++; return true; } } bool MyQueue::DeQueue(int &element) { if(QueueEmpty()) { return false; } else { element=m_pQueue[m_iHead]; m_iHead++; m_iHead=m_iHead%m_iQueueCapacity; m_iQueueLen--; return true; } } void MyQueue::QueueTraverse() { cout< #include #include"MyQueue.h" using namespace std; int main(void) { MyQueue *p=new MyQueue(4); p->EnQueue(10); p->EnQueue(12); p->EnQueue(16); p->EnQueue(18); p->QueueTraverse(); int e=0; p->DeQueue(e); cout<DeQueue(e); cout<QueueTraverse(); p->CleanQueue(); p->QueueTraverse(); p->EnQueue(20); p->EnQueue(30); p->QueueTraverse(); delete p; p=NULL; system("pause"); return 0; }
以上內容來源於慕課網。