vortesnail
2016-11-06 13:19
MyQueue.cpp
#include "MyQueue.h"
#include<iostream>
using namespace std;
MyQueue::MyQueue(int queueCapacity)
{
m_iQueueCapacity = queueCapacity;
//当前代码可以调用ClearQueue()
m_iHead = 0; //初始化队头
m_iTail = 0; //初始化队尾
m_iQueueLen = 0; //一开始元素0个
//默认构造函数要参数要赋初值
m_pQueue = new Customer[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
{
if (m_iQueueLen == 0)
return true;
else
return false;
//return m_iQueueLen == 0 ? true : false;
}
bool MyQueue::QueueFull() const
{
if (m_iQueueLen == m_iQueueCapacity)
return true;
else
return false;
}
int MyQueue::QueueLength() const
{
return m_iQueueLen;
}
bool MyQueue::EnQueue(Customer element)
{
//判满
if (QueueFull())
return false;
m_pQueue[m_iTail] = element;
m_iTail++;
//循环
m_iTail = m_iTail % m_iQueueCapacity;
m_iQueueLen++;
return true;
}
bool MyQueue::DeQueue(Customer &element)
{
if (QueueEmpty())
return false;
element = m_pQueue[m_iHead];
m_iHead++;
//循环
m_iHead = m_iHead % m_iQueueCapacity;
m_iQueueLen--;
return true;
}
void MyQueue::QueueTraverse()
{
//m_iHead = 3时,m_iTale = 1时,通过以下可以顺利
//打印出m_pQueue[3],m_pQueue[0]的值
for (int i = m_iHead; i < (m_iHead + m_iQueueLen); i++) {
m_pQueue[i % m_iQueueCapacity].printInfo();
}
}demo.cpp
#include<iostream>
#include<stdlib.h>
#include "MyQueue.h"
using namespace std;
/*******************************************
环形队列的C++代码检测
*******************************************/
int main(void)
{
MyQueue *p = new MyQueue(4);
Customer c1("vortesnail", 21);
Customer c2("hello", 22);
Customer c3("world", 23);
p->EnQueue(c1);
p->EnQueue(c2);
p->EnQueue(c3);
p->QueueTraverse();
delete p;
p = NULL;
system("pause");
return 0;
}其他地方仔细看过了 没错,感觉出问题的应该在MyQueue里面,但是怎么也找不出错误。。

加个大括号
错误截图:
数据结构探险—队列篇
110171 学习 · 183 问题
相似问题