码迷,mamicode.com
首页 > 编程语言 > 详细

C++学习笔记50:队列类模板

时间:2017-03-15 22:53:10      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:private   queue   turn   ges   empty   oid   ret   cas   src   

队列是只能向一端添加元素,从另一端删除元素的线性群体

技术分享

循环队列

  • 在想象中将数组弯曲成环形,元素出队时,后继元素不移动,每当队尾达到数组最后一个元素时,便再回到数组开头。

 

 队列类模板

//Queue.h
#ifndef QUEUE_H
#define QUEUE_H
#include <cassert>

//类模板的定义
template <class T, int SIZE = 50> class Queue
{
private:
    int front, rear, count;
    T list[SIZE];
public:
    Queue();
    void insert(const T &item);
    T remove();
    void clear();
    const T &getFront() const;

    int getLength() const;
    bool isEmpty() const;
    bool isFull() const;
};

template <class T, int SIZE> Queue<T, SIZE>::Queue():front(0),rear(0),count(0){}

template <class T, int SIZE> void Queue<T, SIZE>::insert(const T& item)
{
    assert(count != SIZE);
    count++;
    list[rear] = item;
    rear = (rear + 1) % SIZE;
}

template <class T, int SIZE> T Queue<T, SIZE>::remove()
{
    assert(count != 0);
    int temp = front;
    count--;
    front = (front + 1) % SIZE;
    return list[temp];
}

template <class T, int SIZE> const T &Queue<T, SIZE>::getFront() const
{
    return list[front];
}

template <class T, int SIZE> int Queue<T, SIZE>::getLength() const
{
    return count;
}

template <class T, int SIZE> bool Queue<T, SIZE>::isEmpty() const
{
    return count == 0;
}

template <class T, int SIZE> bool Queue<T, SIZE>::isFull() const
{
    return count == SIZE;
}

template <class T, int SIZE> bool Queue<T, SIZE>::clear()
{
    count = 0;
    front = 0;
    rear = 0;
}

#endif // 

 

C++学习笔记50:队列类模板

标签:private   queue   turn   ges   empty   oid   ret   cas   src   

原文地址:http://www.cnblogs.com/hujianglang/p/6556838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!