• 循环队列模版


    View Code
    #ifndef QUEUE_H
    #define QUEUE_H
    #include <cassert>
    //类模版的定义
    template<class T,int SIZE=50>          //size是队列能容纳的个数
    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;                   //队尾指针增1
    }
    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>
    void Queue<T,SIZE>::clear(){//清空队列
        count=0;
        front=0;
        rear=0;
    }
    #endif
  • 相关阅读:
    堆排序,C++模板编程
    洗牌程序的两种实现方法比较
    读取/保存xml文件的类(序列化/反序列化)
    [返回上一页,并且刷新]
    实现等级的存储过程sql
    C#实现WMI读取远程计算机信息【原】
    开源IT资产管理系统>OCS Inventory NG服务端
    xaf实现自定义只读参数
    How to show a Detail View via code
    15个最好的免费开源电子商务平台
  • 原文地址:https://www.cnblogs.com/aijianiula/p/2799558.html
Copyright © 2020-2023  润新知