Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Queue<int>X;
- //trying to run the program .
- for ( int i = 0; i < 5; i++)
- {
- X.Push(i + 1);
- cout << X.Size() << endl;
- }
- X.front();/
- X.Pop();
- X.front();
- X.Pop();
- return 0;
- template<class Mine>
- class Node
- {
- public:
- Mine Value;
- Node<Mine> *Prev;
- Node();
- Node(Mine );
- };
- template<class Mine>
- //Queue Class
- class Queue
- {
- int Elements;
- Node<Mine> *Front, *Back;
- public:
- Queue();
- ~Queue();
- int Size();//returns Queue Size
- void Push(Mine );//Push a new value to the back
- void Pop();//removes a value from the front
- void Clear();// delete all the elements
- bool isEmpty();// checks if there are no elements in the queue
- Mine front();//returns the value in the front
- };
- template<class Mine>
- Node<Mine>::Node()
- {
- Value = 0;
- Prev = 0;
- }
- template<class Mine>
- Node<Mine>::Node(Mine Value)
- {
- this->Value = Value;
- Prev = 0;
- }
- template<class Mine>
- Queue<Mine>::Queue()
- {
- Elements = 0;
- Front = Back = 0;
- }
- template<class Mine>
- Queue<Mine>::~Queue()
- {
- Clear();
- }
- template<class Mine>
- int Queue<Mine>::Size()
- {
- return Elements;
- }
- template<class Mine>
- void Queue<Mine>::Push(Mine Value)
- {
- Node<Mine> *NEW = new Node<Mine>(Value);
- if (Front==0)
- {
- Front = Back = NEW;
- Back->Prev = 0;
- }
- else
- {
- Back->Prev=NEW;
- Back = NEW;
- Back->Prev = 0;
- }
- Elements++;
- }
- template<class Mine>
- void Queue<Mine>::Pop()
- {
- Node<T>*tmp;
- assert(!isEmpty());
- tmp = Front->Prev;
- delete Front;
- Front = tmp;
- delete tmp;
- if ( Elements==1)Front=Back;
- Elements--;
- }
- template<class Mine>
- void Queue<Mine>::Clear()
- {
- for (int i = 0; i < Elements; i++)
- {
- Pop();
- }
- }
- template<class Mine>
- bool Queue<Mine>::isEmpty()
- {
- return Elements == 0;
- }
- template<class Mine>
- Mine Queue<Mine>::front()
- {
- assert(!isEmpty());
- return Front->Value;
- }
Add Comment
Please, Sign In to add comment