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;





}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值