C++实现队列(数组版)

来源:互联网 发布:光环大数据坑吗 编辑:程序博客网 时间:2024/06/05 01:16
#include <iostream>using namespace std;template<typename T>class myQueue{public:myQueue() : head(0), tail(0), length(0){//memset(a, 0, sizeof(a));    //没有string数组 a = new T[maxn];}~myQueue();void push(const T&);void pop();T& front();int size() const{return length;}bool empty() const;bool full() const{return (tail + 1) % maxn == head;}void destory();private:static const int maxn = 255;int head, tail, length;T *a;};template<typename T>myQueue<T>::~myQueue(){delete[] a;}template<typename T>bool myQueue<T>::empty() const{return size() == 0;}template<typename T>void myQueue<T>::push(const T& val){a[tail] = val;tail = (tail + 1) % maxn;length++;}template<typename T>T& myQueue<T>::front(){return a[head];}template<typename T>void myQueue<T>::pop(){head = (head + 1) % maxn;length--;}template<typename T>void myQueue<T>::destory(){while(!empty())pop();}int main(void){//myQueue<int> q;////for(int i = 0; i < 257; i++)//{//if(!q.full())//q.push(i);//}////while(!q.empty())//{//cout << q.front() << endl;//q.pop();//}//myQueue<double> q;//q.push(1.1);//q.push(0.22);////cout << q.size() << endl;//cout << q.front() << endl;myQueue<string> q;q.push("lalala");cout << q.front() << endl;return 0;}

0 0
原创粉丝点击