一、队列的定义
class CirQueue
{
public:
CirQueue(int len)
{
this->m_Array = new int[len] {};
this->m_Front_idx = 0;
this->m_Rear_idx = 0;
this->m_Len = len;
}
void Push(int data);
void Delete();
void Print();
~CirQueue()
{
if (this->m_Array != nullptr)
{
delete[] this->m_Array;
this->m_Array = nullptr;
}
}
private:
int* m_Array;
int m_Front_idx;
int m_Rear_idx;
int m_Len;
};
二、插入
void CirQueue::Push(int data)
{
if ((this->m_Rear_idx + 1) % this->m_Len == this->m_Front_idx)
{
cout << "队列已满,插入失败" << endl;
return;
}
this->m_Array[this->m_Rear_idx] = data;
this->m_Rear_idx = (this->m_Rear_idx + 1) % this->m_Len;
}
三、删除
void CirQueue::Delete()
{
if (this->m_Front_idx == this->m_Rear_idx)
{
cout << "队列为空,删除失败" << endl;
return;
}
this->m_Array[this->m_Front_idx] = 0;
this->m_Front_idx = (this->m_Front_idx + 1) % this->m_Len;
}
四、整体展示
#include <iostream>
using namespace std;
class CirQueue
{
public:
CirQueue(int len)
{
this->m_Array = new int[len] {};
this->m_Front_idx = 0;
this->m_Rear_idx = 0;
this->m_Len = len;
}
void Push(int data);
void Delete();
void Print();
~CirQueue()
{
if (this->m_Array != nullptr)
{
delete[] this->m_Array;
this->m_Array = nullptr;
}
}
private:
int* m_Array;
int m_Front_idx;
int m_Rear_idx;
int m_Len;
};
void CirQueue::Push(int data)
{
if ((this->m_Rear_idx + 1) % this->m_Len == this->m_Front_idx)
{
cout << "队列已满,插入失败" << endl;
return;
}
this->m_Array[this->m_Rear_idx] = data;
this->m_Rear_idx = (this->m_Rear_idx + 1) % this->m_Len;
}
void CirQueue::Delete()
{
if (this->m_Front_idx == this->m_Rear_idx)
{
cout << "队列为空,删除失败" << endl;
return;
}
this->m_Array[this->m_Front_idx] = 0;
this->m_Front_idx = (this->m_Front_idx + 1) % this->m_Len;
}
void CirQueue::Print()
{
for (int i = 0; i < this->m_Len - 1; ++i)
{
cout << this->m_Array[i] << " ";
}
cout << endl;
}
void Text()
{
CirQueue CQ(5);
CQ.Push(5);
CQ.Push(2);
CQ.Push(3);
CQ.Push(4);
CQ.Print();
CQ.Delete();
CQ.Print();
}
int main()
{
Text();
system("pause");
return 0;
}