队列

#include<iostream>
using namespace std;

class MyQueue
{
public:
    MyQueue(int queueCapacity);     //InitQueue(&Q) 创建队列
    virtual ~MyQueue();             //DestroyQueue(&Q) 销毁队列
    void ClearQueue();              //ClearQueue(&Q) 清空队列
    bool QueueEmpty()const;         //QueueEmpty(Q) 判空队列
    bool QueueFull()const;          //QueueFull(Q)  判满队列
    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;
};

MyQueue::MyQueue(int queueCapacity)
{
    m_iQueueCapacity = queueCapacity;
    m_iHead=0;
    m_iTail=0;
    m_iQueueLen=0;
    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())
    {
        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
    {
        m_pQueue[m_iHead]=element;
        m_iHead++;
        m_iHead=m_iHead%m_iQueueCapacity;
        m_iQueueLen--;
        return true;
    }

}

void MyQueue::QueueTraverse()
{
    for(int i=m_iHead;i<m_iQueueLen;i++)
    {
        cout<<m_pQueue[i%m_iQueueLen]<<endl;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值