m_iHead和m_iTail明明初始化为0了,可是测试发现变成了-842150451
我没有办法执行,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;
}
}