Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Queue.h
- *
- * Created on: 24.01.2017
- * Author: Jays
- */
- #ifndef QUEUE_H_
- #define QUEUE_H_
- #include <iostream>
- #include <iterator>
- #include <stdexcept>
- using namespace std;
- template <class TYPE>
- class Queue {
- private:
- int size;
- int count;
- TYPE* pData;
- int top,bottom;
- void resize(int input);
- public:
- Queue();
- Queue(const Queue<TYPE>& q);
- Queue(Queue<TYPE>&& q);
- ~Queue();
- Queue<TYPE>& operator=(const Queue<TYPE>& q);
- Queue<TYPE>& operator=(Queue<TYPE>&& q);
- void enqueue(TYPE value);
- TYPE dequeue();
- //class QueueIterator: public iterator<std::forward_iterator_tag,TYPE{
- //
- // QueueIterator(TYPE* pAct= nullptr):pAct(pAct){}
- //
- //
- //}
- };
- template<class TYPE>
- inline Queue<TYPE>::Queue(){
- size = 4;
- count = 0;
- pData = new TYPE[size];
- top = 0;
- bottom = -1;
- }
- template<class TYPE>
- inline Queue<TYPE>::Queue(const Queue<TYPE>& q){
- size = q.size;
- count = q.count;
- pData = new TYPE[size];
- for(int i=0;i<size;i++){
- pData[i]=q.pData[i];
- }
- top = q.top;
- bottom = q.bottom;
- }
- template<class TYPE>
- inline Queue<TYPE>::Queue(Queue<TYPE>&& q){
- size = q.size;
- count = q.count;
- pData = q.pData;
- top = q.top;
- bottom = q.bottom;
- q.size = 0;
- q.bottom = 0;
- q.count = 0;
- q.pData = nullptr;
- q.top = 0;
- }
- template<class TYPE>
- inline Queue<TYPE>::~Queue(){
- delete[] pData;
- }
- template<class TYPE>
- inline Queue<TYPE>& Queue<TYPE>::operator=(const Queue& q){
- }
- template<class TYPE>
- inline Queue<TYPE>& Queue<TYPE>::operator=(Queue&& q){
- }
- template<class TYPE>
- inline void Queue<TYPE>::enqueue(TYPE value){
- if(top==bottom){
- resize(size*2);
- top=count;
- }
- pData[top] = value;
- if(bottom==-1)
- bottom= top;
- if(top+1>=size)
- top = 0;
- else
- top+=1;
- cout<< top<<endl;
- cout<< size<<endl;
- count++;
- }
- template<class TYPE>
- inline TYPE Queue<TYPE>::dequeue(){
- cout <<bottom;
- int ret = bottom;
- if(bottom+1!=top)
- bottom+=1;
- if(bottom>=size&&top!=0)
- bottom = 0;
- else
- bottom = -1;
- count--;
- return pData[ret];
- }
- template<class TYPE>
- inline void Queue<TYPE>::resize(int input){
- if(input<=size)
- throw std::out_of_range("blah");
- TYPE* neu= new TYPE[input];
- for(int i=0;i<size;i++){
- neu[i]=pData[i];
- }
- size = input;
- delete[] pData;
- pData = neu;
- }
- #endif /* QUEUE_H_ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement