#include<iostream>
using namespace std;
template <class DataType>
struct Node{
DataType data;
Node<DataType> *next;
};
template <class DataType>
class LinkedQueue
{
private:
Node<DataType> *front,*rear;//对头和队尾指针
public:
LinkedQueue();
~LinkedQueue();
void enQueue(float x);
DataType deQueue();
DataType getQueue();
bool isEmpty();
};
template <class DataType>
LinkedQueue<DataType>::LinkedQueue()
{
Node<DataType> *s=NULL;
s=new Node<DataType>;
s->next=NULL;
front=rear=s;
}
template <class DataType>
LinkedQueue<DataType>::~LinkedQueue(){
Node<DataType> *p=NULL;
while(front!=NULL){
p=front;
front=p->next;
delete p;
}
}
template <class DataType>
void LinkedQueue<DataType>::enQueue(float x)
{
Node<DataType> *s=new Node<DataType>;
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}
template <class DataType>
DataType LinkedQueue<DataType>::deQueue()
{
Node<DataType> *p=NULL;
int x;
if(rear==front) throw"队空!\n";
p=front->next;
front->next=p->next;//将队头元素所在节点摘链
x=p->data;//暂存队头元素
if(p->next==NULL) rear=front;//判断出队前队列长度是否为1
delete p;
return x;
}
template <class DataType>
DataType LinkedQueue<DataType>::getQueue()
{
if(front==rear) throw"队空!\n";
return front->next->data;
}
template <class DataType>
bool LinkedQueue<DataType>::isEmpty()
{
if(front==rear) return true;
else return false;
}
int main() {
LinkedQueue<int> s = LinkedQueue<int>();
cout << "isEmpty : " << s.isEmpty() << endl;
s.enQueue(86);
s.enQueue(99);s.enQueue(67);
s.enQueue(95);s.enQueue(88);
s.enQueue(78);s.enQueue(83);
s.enQueue(69);
cout << "判断此时表是否为空: " << s.isEmpty() << endl;
cout << "获取栈顶元素: " <<s.getQueue() << endl;
cout << "出栈: " << s.deQueue() << endl;
cout << "出栈:" << s.deQueue() << endl;
cout << "获取此时的栈顶: " <<s.getQueue() << endl;
return 0;
}