zoukankan      html  css  js  c++  java
  • C++数组实现的循环队列

    #include<iostream>
    #include <string>
    
    /*
    功能:数组实现的循环队列,C++实现,学习参考
    */
    
    using namespace std;
    
    template <typename T>
    class Myloopqueue{
    private:
    T *queue;//存储用的数组
    int capacity;//存放个数
    int head;//指向队首
    int tail;//指向队尾
    public:
    Myloopqueue(int a);//无参构造
    Myloopqueue();//有参构造
    ~Myloopqueue();//析构
    bool isEmpty();//判断空
    int getSize();//返回个数
    bool push(T a);//入队
    bool pop();//出队
    T top();//显示队首
    };
    
    template<typename T>
    Myloopqueue<T>::Myloopqueue(int a) :head(0), tail(0), capacity(a), queue(nullptr){
    queue = new T[capacity];
    }
    
    template<typename T>
    Myloopqueue<T>::Myloopqueue() : Myloopqueue(10){};
    
    template<typename T>
    Myloopqueue<T>::~Myloopqueue(){
    delete[] queue;
    }
    
    template<typename T>
    bool Myloopqueue<T>::isEmpty(){
    if (head == tail)
    return true;
    else
    return false;
    }
    
    template<typename T>
    int Myloopqueue<T>::getSize(){
    return (tail - head + capacity) % capacity;
    }
    
    template<typename T>
    bool Myloopqueue<T>::push(T a){
    if ((tail - head + capacity) % capacity == capacity)
    return false;
    queue[tail] = a;
    tail = (tail + 1) % capacity;
    return true;
    }
    
    template<typename T>
    bool Myloopqueue<T>::pop(){
    if ((tail - head + capacity) % capacity == 0)
    return false;
    head = (head + 1) % capacity;
    return true;
    }
    
    template<typename T>
    T Myloopqueue<T>::top(){
    return queue[head%capacity];
    }
    
    
    int main()
    {
    Myloopqueue<string> queue(6);
    queue.push("one");
    queue.push("two");
    queue.push("three");
    queue.push("four");
    queue.push("five");
    cout << "队列长度" << queue.getSize() << endl;
    while (!queue.isEmpty())
    {
    cout << queue.top() << endl;
    queue.pop();
    }
    getchar();
    return 0;
    
    }
  • 相关阅读:
    支付宝支付-扫码支付
    安装agent
    设置微服务环境变量脚本
    曹工说Spring Boot源码(23)-- ASM又立功了,Spring原来是这么递归获取注解的元注解的
    matlab文件拷贝
    hive优化之调整mapreduce数目
    软件测试面试题
    wtforms第三方校验库
    flask貌似可以学习和参考的网站
    flask 接受(获取)url 请求的参数 的方法 和 表单 post过来的数据
  • 原文地址:https://www.cnblogs.com/jizhji/p/5879641.html
Copyright © 2011-2022 走看看