一、结点和链队列的定义
class Node
{
public:
Node(int data)
{
this->m_Next = nullptr;
this->m_Data = data;
}
int m_Data;
Node* m_Next;
};
class ListQueue
{
public:
void Push(int data);
void Delete();
void Print();
~ListQueue()
{
if (this->m_Front != nullptr)
{
delete this->m_Front;
this->m_Front = nullptr;
}
}
private:
Node* m_Front;
Node* m_Rear;
};
二、插入
void ListQueue::Push(int data)
{
Node* node = new Node(data);
if (this->m_Front == nullptr)
{
this->m_Front = node;
this->m_Rear = node;
}
else
{
this->m_Rear->m_Next = node;
this->m_Rear = node;
}
}
三、删除
void ListQueue::Delete()
{
if (this->m_Front == this->m_Rear)
{
cout << "队列为空,删除失败" << endl;
return;
}
Node* Temp_node = this->m_Front;
this->m_Front = Temp_node->m_Next;
if (this->m_Rear == Temp_node)
{
this->m_Rear = this->m_Front;
}
delete Temp_node;
Temp_node = nullptr;
}
四、整体展示
#include <iostream>
using namespace std;
class Node
{
public:
Node(int data)
{
this->m_Next = nullptr;
this->m_Data = data;
}
int m_Data;
Node* m_Next;
};
class ListQueue
{
public:
void Push(int data);
void Delete();
void Print();
~ListQueue()
{
if (this->m_Front != nullptr)
{
delete this->m_Front;
this->m_Front = nullptr;
}
}
private:
Node* m_Front;
Node* m_Rear;
};
void ListQueue::Push(int data)
{
Node* node = new Node(data);
if (this->m_Front == nullptr)
{
this->m_Front = node;
this->m_Rear = node;
}
else
{
this->m_Rear->m_Next = node;
this->m_Rear = node;
}
}
void ListQueue::Delete()
{
if (this->m_Front == this->m_Rear)
{
cout << "队列为空,删除失败" << endl;
return;
}
Node* Temp_node = this->m_Front;
this->m_Front = Temp_node->m_Next;
if (this->m_Rear == Temp_node)
{
this->m_Rear = this->m_Front;
}
delete Temp_node;
Temp_node = nullptr;
}
void ListQueue::Print()
{
Node* Temp_idx = this->m_Front;
while (Temp_idx)
{
cout << Temp_idx->m_Data<< " ";
Temp_idx = Temp_idx->m_Next;
}
cout << endl;
}
void Text()
{
ListQueue LQ;
LQ.Push(10);
LQ.Push(7);
LQ.Push(8);
LQ.Push(6);
LQ.Push(1);
LQ.Push(2);
LQ.Print();
LQ.Delete();
LQ.Delete();
LQ.Delete();
LQ.Print();
}
int main()
{
Text();
system("pause");
return 0;
}