c++ 模板队列实现

#include <iostream>
using std::cout;
using std::endl;
template<typename T,int size=11> 
class Queue
{
public:
    Queue();
    bool isFull();
    bool empty();
    void push(const int elem);
    void pop();
    T get_back();
    T get_front();

private:
    T _arr[size];
    int _front;
    int _rear;
};

template<typename T,int size>
Queue<T,size>::Queue()
:_front(0)
,_rear(0){

}

template<typename T,int size>
bool Queue<T, size>::empty() {
    return  _rear==_front;
}

template<typename T,int size>
bool Queue<T, size>::isFull() {
    return  (_rear + 1) % size == _front;
}

template<typename T,int size>
void Queue<T, size>::push(const int elem) {
    if (!isFull())
         _arr[_rear++] = elem;
    else
        cout << "队列已经满了" << endl;
}
template<typename T,int size>
void Queue<T, size>::pop() {
    if (!empty()) {
        ++_front;
        _front %= size;
    }
    else
        cout << "队列已经满了" << endl;
}
template<typename T,int size>
T Queue<T, size>::get_front() {
    return _arr[_front];
}
template<typename T,int size>
T Queue<T, size>::get_back() {
    return _arr[(_rear - 1 + size) % size];
}



int main() {
    Queue<int> queint;
    cout << "queue is empty " << queint.empty() << endl;
    queint.push(1);
    cout << "after push 1,queue is empty " << queint.empty() << endl;
    for (int i = 2; i !=11; i++)
    {
        queint.push(i);
    }
    cout << "queue is full? " << queint.isFull() << endl;
    while (!queint.empty())
    {
        cout << queint.get_front() << " ";
        queint.pop();
    }

    cout <<endl;
    system("pause");
    return 0;
}

queue is empty 1
after push 1,queue is
queue is full? 1
1 2 3 4 5 6 7 8 9 10

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 曾经有一份美好的爱情放在我的面前我没有珍惜。等到失去后才后悔莫及。如果可以再对小李说。毛欣想说。这辈子无缘再牵手。...
    毛欣与小李阅读 2,686评论 0 13
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 不关注还真没有发现自己的问题啊…… 昨天晚上吃饭的时候又爆发了战争啊,最近的我也是心情常常处于一点就爆的边缘,但这...
    阳光洒洒阅读 151评论 0 1
  • 8-15星期二9:31梨园家中 昨天没有跑步,因为手机不在身边。这也能构成因果关系,真是醉了。周末从婆婆那边回来时...
    魏雨self阅读 174评论 1 0