Queue

来源:互联网 发布:淘宝违规考试答案2013 编辑:程序博客网 时间:2024/06/06 21:38

Queue.h

#pragma oncetemplate<class T>class queue {public:    queue();    ~queue();    bool enqueue(const T);    T dequeue();    bool empty() const;    bool full() const;private:    T* data;    int head;    int tail;};

Queue.cpp

#include"Queue.h"#include<iostream>const int N = 10;template<class T>queue<T>::queue():head(0),tail(0),data(new T[N]){}template<class T>queue<T>::~queue() {    delete[] data;}template<class T>bool queue<T>::empty() const{    if (head == tail)        return true;    return false;}template<class T>bool queue<T>::full() const{    if (tail == (N - 1) && head == 0) {        return true;    }    else if (head == tail + 1) {        return true;    }    return false;}template<class T>bool queue<T>::enqueue(const T elem) {    if (!full()) {        data[tail] = elem;        if (tail == N - 1) {            tail = 0;        }        else {            ++tail;        }        return true;    }    else {        std::cout << "queue is full" << std::endl;        return false;    }}template<class T>T queue<T>::dequeue() {    if (empty()) {        std::cout << "queue is empty!" << std::endl;        return T();    }    else {        return data[head++];    }}/*int main() {    queue<int> text;    text.enqueue(6);    text.enqueue(7);    text.enqueue(8);    text.enqueue(9);    std::cout << text.dequeue() << std::endl;    std::cout << text.dequeue() << std::endl;    std::cout << text.dequeue() << std::endl;    std::cout << text.dequeue() << std::endl;    return 0;}*/

0 0
原创粉丝点击