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

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;

}

}


正在回答

5 回答

#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;

}


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

LUHAN艺3248098 提问者

void myQueue::clearQueue() //清空 { int m_iHead=0; int m_iTail=0; int m_iqueueLen=0;//是这三句不应该有int,对比了你的代码好多遍才发现,困扰我好多天的问题终于解决了,十分感谢 }
2016-10-20 回复 有任何疑惑可以回复我~
#2

暗夜公爵yk 回复 LUHAN艺3248098 提问者

不客气,一起加油
2016-10-20 回复 有任何疑惑可以回复我~
#3

LUHAN艺3248098 提问者 回复 暗夜公爵yk

恩恩啊,共勉啊~fighting~
2016-10-20 回复 有任何疑惑可以回复我~

为什么length要加const,他是可变的啊,

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

我也出现了这样的结果 但是我是因为判满,判空,还有队列长度这三个函数没有加const,我想问一下这里为什么要加const

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

先初始0,再挂在数组

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

你的demo文件怎么写的

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

LUHAN艺3248098 提问者

#include "myQueue.h" #include <iostream> using namespace std; int main() { myQueue *p=new myQueue(4); p->enQueue(10); p->enQueue(8); p->queueTraverse(); delete p; p=NULL; system("pause"); return 0; }
2016-10-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

m_iHead和m_iTail明明初始化为0了,可是测试发现变成了-842150451

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