**
以下内容来自幕课网Jmaes老师视频 地址:https://www.imooc.com/video/10305
**
1.队列(普通队列,环形队列)
2.环形队列示例源码
MyQueueTest.h
#ifndef MYQUEUETEST_H
#define MYQUEUETEST_H
#include"person.h"
class MyQueueTest
{
public:
MyQueueTest(int queueCapacity);
virtual ~MyQueueTest();
void cleanQueue();
bool queueEmpty() const;
bool queueFull() const;
int queueLength() const;
bool addQueue(Person element);
bool delQueue(Person& element);
void PrintSelf();
private:
Person* m_pQueue;
int m_iQueueLenth;
int m_iQueueCapacity;
int m_iHead;
int m_iTail;
};
#endif // MYQUEUETEST_H
MyQueueTest.cpp
#include "myqueuetest.h"
#include<iostream>
using namespace std;
MyQueueTest::MyQueueTest(int queueCapacity)
{
m_iQueueCapacity = queueCapacity;
m_pQueue = new Person[m_iQueueCapacity];
cleanQueue();
}
MyQueueTest::~MyQueueTest()
{
delete[] m_pQueue;
m_pQueue = nullptr;
}
void MyQueueTest::cleanQueue()
{
m_iHead = 0;
m_iTail = 0;
m_iQueueLenth = 0;
}
bool MyQueueTest::queueEmpty() const
{
return m_iQueueLenth==0 ? true : false;
}
bool MyQueueTest::queueFull() const
{
return m_iQueueLenth==m_iQueueCapacity ? true : false;
}
int MyQueueTest::queueLength() const
{
return m_iQueueLenth;
}
bool MyQueueTest::addQueue(Person element)
{
if(queueFull())
return false;
m_pQueue[m_iTail] = element;
++m_iTail;
m_iTail = m_iTail%m_iQueueCapacity;
++m_iQueueLenth;
return true;
}
bool MyQueueTest::delQueue(Person &element)
{
if(queueEmpty())
return false;
element = m_pQueue[m_iHead];
++m_iHead;
m_iHead = m_iHead%m_iQueueCapacity;
--m_iQueueLenth;
return true;
}
void MyQueueTest::PrintSelf()
{
for(int i=m_iHead; i<m_iQueueLenth+m_iHead; i++){
m_pQueue[i%m_iQueueCapacity].printInfo();
cout << "the front of person:" << i-m_iHead << endl;
}
}
person.h
#ifndef PERSON_H
#define PERSON_H
#include<string>
class Person
{
public:
Person(std::string name="",int age=1);
void printInfo() const;
private:
std::string m_strName;
int m_iAge;
};
#endif // PERSON_H
person.cpp
#include "person.h"
#include<iostream>
using namespace std;
Person::Person(std::string name, int age)
{
m_strName = name;
m_iAge = age;
}
void Person::printInfo() const
{
cout << "name:" << m_strName <<endl;
cout << "age:" << m_iAge << endl;
}