队列的链式存储
实现代码
#include <iostream>
using namespace std;
template <typename T>
struct QueueNode
{
T data;
QueueNode<T>* next;
};
template <typename T>
class LinkQueue
{
public:
LinkQueue();
~LinkQueue();
bool EnQueue(const T& e);
bool DeQueue(T& e);
bool GetQueue(T& e);
bool Empty();
int Queue();
void DisplayQueue();
void ClearQueue();
private:
QueueNode<T>* m_front;
QueueNode<T>* m_rear;
int m_size;
QueueNode<T>* m_head;
};
template <typename T>
LinkQueue<T>::LinkQueue()
{
QueueNode<T>* m_head = new QueueNode<T>;
m_front = nullptr;
m_rear = nullptr;
m_head->next = m_front;
m_size = 0;
}
template <typename T>
LinkQueue<T>::~LinkQueue()
{
T k;
while (m_size > 0)
{
DeQueue(k);
}
delete m_head;
}
template <typename T>
bool LinkQueue<T>::EnQueue(const T& e)
{
QueueNode<T>* p = new QueueNode<T>;
p->data = e;
if (m_size == 0)
{
m_rear = p;
m_front = p;
m_size++;
return true;
}
if (m_size == 1)
{
m_rear = p;
m_front->next = m_rear;
m_size+&