1. 程式人生 > >c++實現基本迴圈佇列操作

c++實現基本迴圈佇列操作

在慕課網上學習的c++迴圈佇列,自己也寫了個實現程式碼。

標頭檔案:

#ifndef MYQUEUE_H
#define MYQUEUE_H

class MyQueue{
public:
    MyQueue(int queueCapacity);     //InitQueue(&q) 建立佇列
    virtual ~MyQueue();                //DestroyQueue(&Q)銷燬佇列
    void clearQueue();              //ClearQueue(&Q) 清空佇列 
    bool QueueEmpty() const
; //QueueEmpty(&Q) 判空佇列 int QueueLength() const; //QueueLength(&Q) 判斷佇列長度 bool EnQueue(int element); //EnQueue(&Q, element)新元素入隊 bool QueueFull() const; 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
#include<iostream>
#include "MyQueue.h"
using namespace std;

MyQueue::MyQueue(int queueCapacity){
    m_iQueueCapacity=queueCapacity;
    clearQueue();
    m_pQueue=new
int[m_iQueueCapacity]; } MyQueue::~MyQueue(){ delete []m_pQueue; m_pQueue=NULL; } void MyQueue::clearQueue(){ m_iHead=0; m_iTail=0; m_iQueueLen=0; } bool MyQueue::QueueEmpty() const{ return m_iQueueLen==0?true:false; } int MyQueue::QueueLength() const{ return m_iQueueLen; } bool MyQueue::QueueFull() const{ return m_iQueueLen==m_iQueueCapacity?true:false; } bool MyQueue::EnQueue(int element){ if (QueueFull()) { cout<<"false"<<endl; 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()) { cout<<"empty"; return false; } element=m_pQueue[m_iHead]; m_iHead++; m_iHead=m_iHead%m_iQueueCapacity; m_iQueueLen--; return true; } void MyQueue::QueueTraverse(){ for (int i=m_iHead;i<m_iQueueLen+m_iHead;i++) { cout<<m_pQueue[i%m_iQueueCapacity]<<endl; } } int main(){ MyQueue *p=new MyQueue(4); p->EnQueue(15); p->EnQueue(16); p->EnQueue(18); p->EnQueue(20); p->EnQueue(35); p->QueueTraverse(); cout<<endl; int n=0; p->DeQueue(n); p->QueueTraverse(); cout<<endl; p->clearQueue(); p->DeQueue(n); return 0; }

程式碼的實現
迴圈佇列的c++實現