Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "a2_circular_queue_template.hpp"
- template <>
- const int CircularQueue<int>::EMPTY_QUEUE = -999;
- template <>
- const char CircularQueue<char>::EMPTY_QUEUE = ' ';
- template <>
- const double CircularQueue<double>::EMPTY_QUEUE = -99.99;
- template <>
- const std::string CircularQueue<std::string>::EMPTY_QUEUE = "- EMPTY -";
- template<class Item>
- CircularQueue<Item>::CircularQueue()
- {
- head_=0;
- tail_=0;
- size_=0;
- capacity_=16;
- items_=new Item[capacity_];
- }
- template<class Item>
- CircularQueue<Item>::CircularQueue(unsigned int capacity)
- {
- head_=0;
- tail_=0;
- size_=0;
- capacity_=capacity;
- items_=new Item[capacity_];
- }
- template<class Item>
- CircularQueue<Item>::~CircularQueue()
- {
- head_=0;
- tail_=0;
- size_=0;
- delete []items_;
- items_=NULL;
- }
- template<class Item>
- bool CircularQueue<Item>::empty() const
- {
- return size_==0;
- }
- template<class Item>
- bool CircularQueue<Item>::full() const
- {
- return size_>=capacity_;
- }
- template<class Item>
- int CircularQueue<Item>::size() const
- {
- return size_;
- }
- template<class Item>
- bool CircularQueue<Item>::enqueue(Item value)
- {
- if(full())
- return false;
- else{
- items_[tail_]=value;
- tail_++;
- if(tail_>=capacity_)
- tail_=0;
- size_++;
- return true;
- }
- }
- template<class Item>
- Item CircularQueue<Item>::dequeue()
- {
- Item result=EMPTY_QUEUE;
- if(!empty()){
- result=items_[head_];
- size_--;
- head_++;
- if(head_>=capacity_)
- head_=0;
- }
- return result;
- }
- template<class Item>
- Item CircularQueue<Item>::peek() const
- {
- return empty()?EMPTY_QUEUE:items_[head_];
- }
- template<class Item>
- void CircularQueue<Item>::print() const
- {
- std::cout<<"( -> "<<items_[0];
- for(int i=1;i<size_;i++){
- std::cout<<" <-> "<<items_[i];
- }
- std::cout<<" <- )"<<std::endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement