• 【C++】队列的实现


    queue.hpp<span style="white-space:pre">	</span>//定义队列类,C++类非常适合于描述
    #ifndef QUEUE_HPP_INCLUDED
    #define QUEUE_HPP_INCLUDED
    
    typedef item_type Item;<span style="white-space:pre">	</span>//item_type为队列中的数据类型,可以是基本数据类型也可以是自己定义的类
    
    class Queue
    {
    private:
        struct Node{Item item;struct Node* next;};   //使用链表表示队列项
        enum{Q_SIZE=10};    //队列的默认大小
        Node* queueFront;   //指向队列头
        Node* queueRear;    //指向队列尾
        int items;  //队列项目数
        const int qSize;    //队列大小
    public:
        Queue(int qSize=Q_SIZE);
        ~Queue();
        bool isEmpty()const;    //队列是否为空
        bool isFull()const;     //队列是否为满
        bool addItem(const Item& item); //到达一个顾客
        bool deleteItem(Item& item);    //服务完一个顾客
        int itemNumber()const;  //队列中的顾客数目
    };
    
    #endif // QUEUE_HPP_INCLUDED
    

    类方法的实现

    queue.cpp

    #include<cstdlib>   //rand()
    #include"queue.hpp"
    
    Queue::Queue(int qs):qSize(qs)
    {
        queueFront=queueRear=NULL;
        items=0;
    }
    
    Queue::~Queue()
    {
        Node* temp;
        while(queueFront!=NULL)
        {
            temp=queueFront;
            queueFront=queueFront->next;
            delete temp;
        }
    }
    
    bool Queue::isEmpty()const
    {
        return items==0;
    }
    
    bool Queue::isFull()const
    {
        return items==qSize;
    }
    
    int Queue::itemNumber()const
    {
        return items;
    }
    
    bool Queue::addItem(const Item& item)
    {
        if(isFull())
            return false;
        Node* add=new Node;
        add->item=item;
        add->next=NULL;
        items++;
        if(queueFront==NULL)
            queueFront=add;
        else
            queueRear->next=add;
        return true;
    }
    
    bool Queue::deleteItem(Item& item)
    {
        if(queueFront==NULL)
            return false;
        item=queueFront->item;
        items--;
        Node* temp=queueFront;
        queueFront=queueFront->next;
        delete temp;
        if(items==0)
            queueRear=NULL;
        return true;
    }
    
    void Customer::set(long when)
    {
        processTime=std::rand()%3+1;
        arrive=when;
    }
    


  • 相关阅读:
    Service与Activity通信 回调方式***
    WeakReference 在android中的应用
    解决用官方容器启动redmine无法插入中文字符的问题
    Python 使用scapy 时报:ImportError: cannot import name 'NPCAP_PATH' 解决
    python3 图片文字识别
    python3 读取dbf文件报错 UnicodeDecodeError: 'gbk' codec can't decode
    RbbitMQ消息队列及python实现
    windows10创建ftp服务器
    什么是ip代理
    Python3爬虫实例 代理的使用
  • 原文地址:https://www.cnblogs.com/corfox/p/5415027.html
Copyright © 2020-2023  润新知