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

来源:5-1 队列的实际应用

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

写回答 关注

2回答

  • 慕斯5158549
    2017-12-22 13:35:25

    http://img4.mukewang.com/5a3c9952000134f804810554.jpg

    加个大括号

    vortes...

    额,单行if不用大括号的

    2018-01-16 17:46:47

    共 1 条回复 >

  • vortesnail
    2016-11-06 13:20:56

    错误截图:http://img.mukewang.com/581ebdb60001e50106770442.jpg

数据结构探险—队列篇

与现实最为贴近的数据结构-队列,带大家进入数据结构的美妙世界

110035 学习 · 170 问题

查看课程

相似问题