About data members and general methods of linked lists
Here is the header file:
Template <classT>classqueuetp{Private: structNODE{T item;structNode *next;}; enum{q_size=Ten}; Node*Front; Node*Rear; intitems; Const intqsize; QUEUETP (): Qsize (0){}; QUEUETP&operator=(ConstQueuetp &q) {return* This;} Public: Queuetp (intn=q_size); ~Queuetp (); BOOLIsEmpty ()Const; BOOLIsfull ()Const; intQueuecount ()Const; BOOLEnqueueConstT &s); BOOLDequeue (T &s); };
Definition of the method:
#include <stdio.h>#include"QueueTp.h"Template<classT>QUEUETP<T>::QUEUETP (intN): Qsize (n) {front=rear=nullptr; Items=0;} Template<classT>QUEUETP<t>::~Queuetp () {Node*temp; while(front!=nullptr) {Temp=Front; Front=front->Next; Delete temp; }}template<classT>BOOLQueuetp<t>::isempty ()Const{ returnitems==0;} Template<classT>BOOLQueuetp<t>::isfull ()Const{ returnitems==Qsize;}
Template<classT>intQueuetp<t>::queuecount ()Const{ returnitems;} Template<classT>BOOLQueuetp<t>:: Enqueue (ConstT &s) { if(Isfull ())return false; Node*temp (S,NULLPTR); if(front==nullptr) {Front=temp; } Items++; Rear->next=temp; Rear=temp; Rear->next=nullptr; return true;} Template<classT>BOOLQueuetp<t>:: Dequeue (T &s) { if(IsEmpty ()) {return false; } s=front->item; Items--; Node*temp; Temp=Front; Front=front->Next; Delete temp; if(items==0) {Rear=nullptr; } return true;}
Linked list templates C + +