sodo0
2017-04-03 19:50
#include "MyQueue.h"
#include <iostream>
using namespace std;
MyQueue::MyQueue(int QueueCapacity)
{
m_iQueueCapacity = QueueCapacity;
m_iHead = 0;
m_iTail = 0;
m_pQueue= new int(m_iQueueCapacity);
m_iQueuelen = 0;
}
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::QueueLengh()const
{
return m_iQueuelen;
}
bool MyQueue::Queuefull()const
{
return (m_iQueueCapacity == m_iQueuelen) ? true : false;
}
bool MyQueue::EnQueue(int element)
{
if (!Queuefull())
{
m_pQueue[m_iTail] = element;
m_iQueuelen++;
if (m_iTail<m_iQueueCapacity-1)
{
m_iTail++;
}
else
{
m_iTail = 0;
}
return true;
}
else
return false;
}
bool MyQueue::DeQueue(int &element)
{
if (Queuefull())
{
return false;
}
element = m_pQueue[m_iHead];
m_iQueuelen--;
if (m_iHead < m_iQueueCapacity - 1)
{
m_iHead++;
}
else
{
m_iHead = 0;
}
return true;
}
void MyQueue::QueueTraverse()
{
for (int i=m_iHead;i!=m_iTail;)
{
cout << m_pQueue[i] << endl;
if (i<m_iQueueCapacity - 1)
{
i++;
}
else
{
i = 0;
}
}
}
在 DeQueue() 出队 函数部分有问题,判断条件应该是写错了,应该是 if (Queueempty()) , 而不是if (Queuefull())
#include "MyQueue.h"
#include <iostream>
using namespace std;
int main(void)
{
MyQueue *Safe = new MyQueue(4);
Safe->EnQueue(4);
Safe->EnQueue(5);
//Safe->EnQueue(6);
Safe->QueueTraverse();
system("pause");
return 0;
}
当加入第三个元素时就会崩溃,调试了半天也没找到问题所在
数据结构探险—队列篇
110041 学习 · 170 问题
相似问题