问答详情
源自:4-3 环形队列检测

为啥我的代码一样,但是经过去取出首元素后遍历,打印结果和刚开始入队元素时的一样


主函数实现的代码

int main(void)
{
 MyQueue *p = new MyQueue(4);
 p->EnQueue(10);
 p->EnQueue(15);
 p->EnQueue(17);
 p->EnQueue(18);
 //p->EnQueue(20);
 p->QueueTraverse();

 int e = 0;
 p->DeQueue(e);
 cout << endl;
 cout << e << endl;

 p->DeQueue(e);
 cout << endl;
 cout << e << endl;

 cout << endl;
 p->QueueTraverse();

 p->ClearQueue();
 p->QueueTraverse();

 delete p;
 p = NULL;

 system("pause");
 return 0;
}

元素出队的函数代码

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


提问者:要有礼貌 2019-08-20 19:51

个回答

  • HackerLZH
    2020-01-15 13:44:31

    楼主解决了吗,我用的是m_iQueueCapacity

  • 慕雪115381
    2019-08-21 20:17:26

    遍历函数里取余时,检查一下有没有用m_iQueueCapacity,而不能用m_iQueueLen.