为了账号安全,请及时绑定邮箱和手机立即绑定

invalid null pointer是咋回事,看了好久没看出错误。

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里面,但是怎么也找不出错误。。

正在回答

2 回答

http://img1.sycdn.imooc.com//5a3c9952000134f804810554.jpg

加个大括号

0 回复 有任何疑惑可以回复我~
#1

vortesnail 提问者

额,单行if不用大括号的
2018-01-16 回复 有任何疑惑可以回复我~

错误截图:http://img1.sycdn.imooc.com//581ebdb60001e50106770442.jpg

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

invalid null pointer是咋回事,看了好久没看出错误。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信