我没有办法执行,m_iHead和m_iTail明明初始化为0了,可是测试发现变成了-842150451,有人知道为什么吗?其他的代码基本都照着教程写了
//.h
#pragma once
class myQueue
{
public:
myQueue(int queueCapacity);//创建
virtual ~myQueue(void); //销毁
void clearQueue(); //清空
bool queueEmpty()const; //判空
bool queueFull()const; //判满
int queueLength()const; //队列长度
bool enQueue(int element); //首元素入列
bool deQueue(int &element);//首元素出列
void queueTraverse(); //遍历
private:
int *m_pQueue; //队列指针
int m_iqueueLen; //队列长度
int m_iqueueCapacity; //队列容量
int m_iHead; //队头
int m_iTail; //队尾
};
//.cpp
#include "myQueue.h"
#include <iostream>
using namespace std;
//#include<stdio.h>
myQueue::myQueue(int queueCaoacity)
{
m_iqueueCapacity=queueCaoacity;
m_pQueue=new int[m_iqueueCapacity];
int m_iHead=0;
int m_iTail=0;
int m_iqueueLen=0;
}
myQueue::~myQueue(void)
{
delete[]m_pQueue;
//m_pQueue = NULL;
m_pQueue =nullptr;
}
void myQueue::clearQueue() //清空
{
int m_iHead=0;
int m_iTail=0;
int m_iqueueLen=0;
}
bool myQueue::queueEmpty()const//判空
{
return m_iqueueLen==0?true:false;
}
bool myQueue::queueFull()const//判满
{
return m_iqueueLen==m_iqueueCapacity?true:false;
};
int myQueue::queueLength()const//队列长度
{
return m_iqueueLen;
}
bool myQueue::enQueue(int element)//首元素入列
{
if(queueFull())
{
return false;
}
else
{
m_pQueue[m_iTail%m_iqueueCapacity]=element;
m_iTail++;
m_iTail=m_iTail%m_iqueueCapacity;
m_iqueueLen=m_iqueueLen+1;
cout<<"rulie"<<m_iqueueLen<<endl;
return true;
}
}
bool myQueue::deQueue(int &element)//首元素出列
{
if(queueEmpty())
{
return false;
}
else
{
element=m_pQueue[m_iHead];
m_iHead++;
m_iHead=m_iHead%m_iqueueCapacity;
m_iqueueLen--;
cout<<"chulie"<<endl;
return true;
}
}
void myQueue::queueTraverse() //遍历
{
cout<<m_iqueueLen;
for(int i=m_iHead;i<m_iHead+m_iqueueLen;i++)
{
cout<<m_pQueue[i%m_iqueueCapacity]<<endl;
cout<<m_pQueue[i%m_iqueueCapacity]<<endl;
}
}
#include "MyQueue.h"
#include <iostream>
using namespace std;
MyQueue::MyQueue(int queueCapacity)
{
int m_iQueueCapacity=queueCapacity; //队列数组容量
ClearQueue();
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
{
element=m_pQueue[m_iHead];
m_iHead++;
m_iHead=m_iHead%m_iQueueCapacity;
m_iQueueLen--;
return true;
}
}
void MyQueue::QueueTraverse()
{
for (int i=m_iHead;i<m_iQueueLen+m_iHead;i++)
{
cout<<m_pQueue[i%m_iQueueCapacity]<<endl;
}
cout<<endl;
}
为什么length要加const,他是可变的啊,
我也出现了这样的结果 但是我是因为判满,判空,还有队列长度这三个函数没有加const,我想问一下这里为什么要加const
先初始0,再挂在数组
你的demo文件怎么写的