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

队(queue),C++模板实现

时间:2018-06-16 13:23:56      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:mcs   rpm   bsp   awk   csv   S3   nvm   ola   png   

队:(queue.h)

#include<iostream>
#include<string>
using namespace std;
//队列判空和判满
//头尾指针相同为空
//尾指针指向下一个可存放数据的单元,如果尾指针偏移一个单元和头指针相同,队列为满
template<class T,int num>
class queue
{
        public:
                queue();
                ~queue();
                bool empty();
                bool full();
                bool push(T elem);
                bool pop(T& tmp);
                int size();
        private:
                int _front;
                int _real;
                T _arr[num];
};
template<class T,int num>
queue<T,num>::queue():_front(0),_real(0){}

template<class T,int num>
queue<T,num>::~queue(){}

template<class T,int num>
bool queue<T,num>::empty()
{
        return _front == _real;
}

template<class T,int num>
bool queue<T,num>::full()
{
        return _front == (_real+1)%num;
}

template<class T,int num>
bool queue<T,num>::push(T elem)
{
        if(!full())
        {
                _arr[_real] = elem;
                _real = (_real+1)%num;
                return true;
        }
        else
                return false;
}

template<class T,int num>
bool queue<T,num>::pop(T &tmp)
{
        if(!empty())
        {
                tmp = _arr[_front];
                _front = (_front+1)%num;
                return true;
        }
        else
                return false;
}

template<class T,int num>
int queue<T,num>::size()
{
        return (_real-_front+num)%num;
}

测试文件(queueTest.cpp)

#include"queue.h"
int main()
{
        queue<int,10> q1;
        q1.push(3);
        q1.push(5);
        int tmp;
        cout<<q1.size()<<endl;
        q1.pop(tmp);
        cout<<tmp<<endl;

        cout<<"----------------------"<<endl;

        queue<string,5> q2;
        q2.push("hello");
        q2.push("world");
        cout<<q2.size()<<endl;
        string tmpString;
        q2.pop(tmpString);
        cout<<q2.size()<<"  "<<tmpString<<endl;
        return 0;
}
技术分享图片

队(queue),C++模板实现

标签:mcs   rpm   bsp   awk   csv   S3   nvm   ola   png   

原文地址:https://www.cnblogs.com/meihao1203/p/9190124.html

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