刚好在10分钟的那个位置出错了。

来源:5-1 队列的实际应用

王业

2016-12-04 22:54

刚好在10分钟的那个位置出错了。
Customer的构造函数:
Customer::Customer()
{
    m_strName = "";
    m_iAge = 0;
}
Customer::Customer(string name, int age)
{
    m_strName = name;
    m_iAge = age;
}

Dequeue()代码:
bool MyQueue::Dequeue(Customer &element)
{
    if(QueueEmpty())
    {
        cout << "Queue is Empty. No more actions needed." << endl;
        return false;
    }
    else
    {
        element = m_pQueue[m_iHead];
        m_iHead++;
        m_iHead = m_iHead % m_iQueueCapacity; //回到第一个位置;
        m_iQueueLen--;
        return true;
    }
}
然后执行代码:
Customer c4("",0);
Customer c5;
p->Dequeue(c4); //c4, c5都报错。

在执行p->Dequeue(c4)时,不管怎么样都会出现“程序已经停止运行”的那个错误提示框,然后返回值是:
Process terminated with status -1073741819 (0 minute(s), 5 second(s))。
但使用c4.printInfo()可以正常获得队列的那个值,后续再遍历也是对的。

感觉整个代码都是完全搬下来的了,哪儿没对?

写回答 关注

3回答

  • 王业
    2016-12-10 20:38:48

    应该是说改成delete p就对了。

  • 王业
    2016-12-10 19:57:17

    我自己找到原因了,我在后面直接执行了delete []p操作,改用清除队列的方法之后就好了。

  • NoBB_
    2016-12-07 17:16:41

    c4,c5 入队列了吗?

    王业

    谢谢,此时执行出队操作。不需要入队。

    2016-12-10 19:55:49

    共 1 条回复 >

数据结构探险—队列篇

与现实最为贴近的数据结构-队列,带大家进入数据结构的美妙世界

110035 学习 · 170 问题

查看课程

相似问题