链队列

来源:互联网 发布:教我开淘宝店 编辑:程序博客网 时间:2024/05/21 17:13
#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;//判断出队前队列长度是否为1delete 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;}