/*
队列的链表实现
*/
#include<iostream>
using namespace std;
template<class T>
struct Node
{
Node<T> *next;
T data;
Node()
{
next=NULL;
}
Node(T element)
{
this->data=element;
next=NULL;
}
};
template<class T>
class Queue
{
public:
//生成队列
Queue();
//队尾入队
void Enqueue(T data);
//队头出队并
void Dequeue();
//获取队头元素
T front_element();
bool isEmpty();
void clear();
size_t getSize();
private:
Node<T> *front,*rear;
size_t size;
};
template<class T>
Queue<T>::Queue()
{
front=rear=NULL;
size=0;
}
template<class T>
void Queue<T>::Enqueue(T data)
{
if(rear==NULL)
{
front=rear=new Node<T>(data);
}
else
{
rear->next=new Node<T>(data);
rear=rear->next;
}
size++;
}
template<class T>
void Queue<T>::Dequeue()
{
if(size==0)
{
cout<<"No element in the queue";
}
else
{
Node<T> *temp=front;
front=front->next;
if(front==NULL)
{
rear=NULL;
}
size--;
delete temp;
}
}
template<class T>
T Queue<T>::front_element()
{
if(size==0)
{
cout<<"No elements in the queue";
return -1;
}
else
{
return front->data;
}
}
template<class T>
void Queue<T>::clear()
{
while(front!=NULL)
{
Node<T> *temp=front;
front=front->next;
delete temp;
size--;
}
rear=NULL;
}
template<class T>
bool Queue<T>::isEmpty()
{
return front==NULL;
}
template<class T>
size_t Queue<T>::getSize()
{
return size;
}
c++ 队列实现
最新推荐文章于 2024-09-02 01:11:34 发布