首页 新闻 搜索 专区 学院

c++(Critical error detected c000037),环形队列的一个实现,插入第三个数据的时候就会崩溃,别人说在他的计算机上可以运行,求大神解答

-2
悬赏园豆:20 [已关闭问题] 关闭于 2017-04-04 14:26
#include <iostream>

using namespace std;


class MyQueue
{
public:
    MyQueue(int QueueCapacity);
    virtual ~MyQueue();
    void ClearQueue();
    bool QueueEmpty()const;
    int QueueLengh()const;
    bool Queuefull()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;
};

MyQueue::MyQueue(int QueueCapacity)
{
    m_iQueueCapacity = QueueCapacity;
    m_iHead = 0;
    m_iTail = 0;
    m_iQueuelen = 0;
    m_pQueue= new int(QueueCapacity);
    

}
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())
    {
        return false;
    }
    else
    {
        m_pQueue[m_iTail] = element;
        m_iQueuelen++;
        m_iTail++;
        m_iTail = m_iTail % m_iQueueCapacity;
        return true;

    }
        
}
bool MyQueue::DeQueue(int &element)
{
    if (QueueEmpty())
    {
        return false;
    }
    else
    {
        element = m_pQueue[m_iHead];
        m_iQueuelen--;
        m_iHead++;
        m_iHead = m_iHead % m_iQueueCapacity;
        return true;

    }
    
}
void MyQueue::QueueTraverse()
{

    for (int i = m_iHead; i < m_iQueuelen + m_iHead; i++)
    {
        i = i % m_iQueueCapacity;
        cout << m_pQueue[i] << endl;

    }
}

int main(void)
{
    MyQueue *Safe = new MyQueue(4);
    Safe->EnQueue(4);
    Safe->EnQueue(5);
    //Safe->EnQueue(6);                  //执行这句就会奔溃
    
    

    Safe->QueueTraverse();
    system("pause");
    return 0;
}
c++
lisan的主页 lisan | 初学一级 | 园豆:185
提问于:2017-04-04 09:30
< >
分享
所有回答(2)
0

申请内存时错误的使用了(),应使用[];

lisan | 园豆:185 (初学一级) | 2017-04-04 14:26
0

恕我直言,你这个所谓的“环形队列”完全就是四不像,建议看看相关代码再自己实践。

牛家村散人 | 园豆:208 (菜鸟二级) | 2017-09-19 11:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册