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;
    
    }
  • 相关阅读:
    JS高级---沙箱小案例
    JS高级---沙箱
    JS高级---闭包案例,点赞
    JS高级---闭包案例,产生多个相同的随机数
    JS高级---闭包小案例
    JS高级---闭包
    JS高级---作用域,作用域链和预解析
    JS高级---函数作为返回值使用拓展,排序
    JS高级---函数作为参数使用
    c# 格式化字符串
  • 原文地址:https://www.cnblogs.com/jizhji/p/5879641.html
Copyright © 2011-2022 走看看