#ifndef QUEUE #define QUEUE 1 template class Queue { private: struct Node { Item data; Node *next; }; Node *pre_front; Node *rear; int length; public: Queue () { pre_front = new Node; rear = pre_front; length = 0; } ~Queue () { Node *temp; temp = pre_front; while (temp != rear) { pre_front = pre_front->next; delete temp; temp = pre_front; } delete temp; } void Enqueue (Item& x) { Node *temp; temp = new Node; temp->data = x; rear->next = temp; rear = temp; length++; } void Dequeue (Item& x) { Node *temp; temp = pre_front; x = pre_front->next->data; pre_front = pre_front->next; delete temp; length--; } int Length () { return length; } }; #endif // QUEUE