#include <iostream>using namespace Std;template <typename t>class queue{public:queue () {node<t> * Node=new node<t> (); node->data=null;node->next=null;qfront=qrear=node;} Template <typename t>struct node{node<t> *next; T data;}; bool Empty () const;void pop (); T & Front (); T & back (); void push (const T &); int size () const;private:node<t> *qfront,*qrear;}; Template <typename t>t &queue<t>::back () {if (!empty ()) return qrear->data;} Template <typename t>t &queue<t>::front () {if (!empty ()) {node<t> *p=qfront->next;return P- >data;}} Template <typename t>bool queue<t>::empty () const{if (qfront==qrear) return True;elsereturn false; Template <typename t>void Queue<t>::p op () {if (!empty ()) {node<t> *p=qfront->next;qfront-> Next=p->next;if (p==qrear) Qrear=qfront;delete P;p=null;}} Template<typename t>void queue<t>::p ush (const T & T) {node<t> *node=new NODE< T>;node->data=t;node->next=null;qrear->next=node;qrear=node;} Template<typename t>int queue<t>::size () const{node<t> *p=qfront;if (Empty ()) return 0;else{int I=1; while (p->next!=qrear) {p=p->next;i++;} return i;}} int main () {queue<int> Q;q.push (1); Q.push (2); Q.pop (); Q.pop (); Q.pop (); Cout<<q.size () <<endl; GetChar (); return 0;}
C + + Template application implements a queue queuing