数组实现的队列

MyQueue.h:

说明:nTai的下一个位置就是nHead的话,表示队满了,牺牲一个空间;

//    nTail == nHead,表示队为空;入队的时候要判断队是否为满,出队的时候,要判断是否为空。

#define size 1000  //数组大小

class CMyQueue  
{
public:
int nTail;  //队列尾,末尾数据的下一个位置
int nHead;  //队列头,首个数据的下标
CString strPcCommand[size];   //数组
public:
CMyQueue();
virtual ~CMyQueue();

bool IsEmpty();    //判断队列是否为空
bool IsFull();     //判断队列是否为满
void EnQueue(CString str);//入队
CString DeQueue(); //出队

};


MyQueue.cpp:

#include "stdafx.h"
#include "MyQueue.h"


CMyQueue::CMyQueue()
{
nTail=0;
nHead=0;
//memset(strPcCommand,0,sizeof(CString)*size);   //数组  ??若队满后要覆盖值,如此初始化不行

    for(int i=0;i<size;i++)

    { 

        strPcCommand[i]=_T("");

    }
}


CMyQueue::~CMyQueue()
{
}


//判断队列是否为空,true为空
bool CMyQueue::IsEmpty()
{
return (nHead == nTail);        //如果尾等于头,则为空
}   


//判断队列是否为满,true为满
bool CMyQueue::IsFull()
{
//如果nTail比nHead小1,则队列满。
    return ((nTail + 1) % size == nHead);  
}


//入队:普通队列
void CMyQueue::EnQueue(CString str)
{
   assert(!IsFull());        //assert表示断言,断言!IsFull成立,如果不成立,则报告程序错误!
   strPcCommand[nTail] = str;
   nTail = (nTail + 1) % size;
}

//入队:循环队列

void CMyQueue::EnQueue(CString str)

{
if (IsFull())
{//如果队列满了
//先往队首覆盖,nHead指针后移,nTail后移
strPcCommand[nTail] = str;
nHead = (nHead + 1) % ArraySize;
nTail = (nTail + 1) % ArraySize;
}
else
{
strPcCommand[nTail]=str;
nTail = (nTail + 1)% ArraySize;
}
}

//出队
CString CMyQueue::DeQueue()
{

    assert(!IsEmpty());
    CString str = strPcCommand[nHead];
    nHead = (nHead + 1) % size;
    return str;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值