C++队列

myQueue.h


#ifndef MYQUEUE_H

#define MYQUEUE_H

class MyQueue

{

public:

    MyQueue(int queueCapacity);      //创建队列

    virtual ~MyQueue();                   //销毁队列

    void ClearQueue();                       //清空队列

    bool QueueEmpty() const;            //判空队列

    bool QueueFull() const;

    int QueueLength() const;                //队列长度

    bool EnQueue(int element);                //新元素入队

    bool DeQueue(int &element);            //首元素出队

    void QueueTraverse();                        //遍历队列

private:

    int * m_pQueue;                         //队列数组指针

    int m_iQueueLen;                        //队列元素个数

    int m_iQueueCapacity;                //队列数组容量

    int m_iHead;

    int m_iTail;

};

#endif


MyQueue.cpp

#include "MyQueue.h"

#include<iostream>

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(Queue())

    { 

         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) const

{

    if(QueueEmpty())

    {

        return false;

    }

    element = m_pQueue[m_iHead];

    m_iHead++;

    m_iHead = m_iHead % m_iCapacity;

    m_QueueLen__;

    return true;

}

void MyQueue::QueueTraverse()

{

    for(int i = m_iHead;  i< m_iQueueLen + m_iHead;  i++)

    {

        cout <<m_pQueue[i%m_iQueueCapacity] <<endl;

    }

}

demo.cpp

#include<iostream>

#include<stdio.h>

#include"MyQueue.h"

using namespace std;

int main()

{

    MyQueue *p =new MyQueue(4);

     p -> EnQueue(10);

     p -> EnQueue(12);

     p -> EnQueue(16);

     p -> EnQueue(18);

     p -> EnQueue(20);

    p -> QueueTraverse();

    int e=0;

    p->DeQueue(e);

    cout <<endl;

    cout <<e <<endl;        

     p->DeQueue(e);

     cout <<endl;

     cout <<e <<endl;   

    cout <<endl;

    p -> QueueTraverse();

    p ->ClearQueue();

    p -> QueueTraverse();    

    p -> EnQueue(10);

     p -> EnQueue(12);

    

    delete p;

    p=NULL:

    system("pause");

    return 0;





}



猜你喜欢

转载自blog.csdn.net/honey_babay/article/details/79659538