之前的遍历函数有点问题,修改:


取余的应是对 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;
}
}
请输入笔记内容...