之前的遍历函数有点问题,修改:
取余的应是对 capacity
QueueTraverse : i< ihead+
test3
test2
demo测试1
//MyQueue.cpp #include "MyQueue.h" #include <iostream> using namespace std; MyQueue::MyQueue(int queueCapacity){ 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{ if(m_iQueueLen==0){ return true; } else{ return false; } } //队列长度 int MyQueue::QueueLength() const{ return m_iQueueLen; } //插入新元素 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::QueueFull() const{ if(m_iQueueLen == m_iQueueCapacity){ return true; } else{ return false; } } //元素出队 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(){ cout<<endl; for(int i=m_iHead;i<m_iQueueLen+m_iHead;i++){ cout<<m_pQueue[i%m_iQueueCapacity]<<endl; } }
请输入笔记内容...