队列

来源:互联网 发布:java ssh 书籍 编辑:程序博客网 时间:2024/05/17 03:50

循环队列

//Queue.htemplate<typename T,int Size=10>class Queue{public:    Queue();    void push(const T &);    void pop();    void empty();    void full();    T & front();    T & rear();    int length();private:    T _arr[Size];    int _front;    int _rear;};
//Queue.cctemplate<typename T,int Size>Queue<T,Size>::Queue():_arr(new T[Size]),_front(0),_rear(0){}template<typename T,int Size>void Queue<T,Size>::push(const T & elem){    if(full())    {        cout << "full stack" << endl;        return;    }    _arr[_rear++] = elem;    _rear %= Size;}template<typename T,int Size>void Queue<T,Size>::pop(){    if(empty())    {        cout << "empty stack" << endl;        return;    }    ++_front;    _front %= Size;}template<typename T,int Size>bool Queue<T,Size>::empty(){    return _rear == _front;}template<typename T,int Size>bool Queue<T,Size>::full(){    return (_rear+1) % Size = _front;}template<typename T,int Size>int Queue<T,Size>::length(){    return (_rear-_front+Size)%Size}template<typename T,int Size>T & front(){    return _arr[_front];}template<typename T,int Size>T & rear(){    return _arr[_rear];}

链队列

//Queue.htypedef struct Queue{    int data;    struct Queue *pnext;}Queue,*QueuePtr;class Queue{public:    Queue();    void enQueue(const int &);    void deQueue();    bool empty();private:    QueuePtr _pfront;    QueuePtr _prear;};
//Queue.ccQueue::Queue():_front(NULL),_rear(NULL){}void Queue::enQueue(const int data){    QueuePtr p = (QueuePtr)malloc(sizeof(Queue));    p->data = data;    p->pnext = NULL;    if(!_pfront)        _pfront = p;    _prear->pnext = p;    _prear = p;}void Queue::deQueue(){    QueuePtr p = _pfront;    free(_pfront);    _pfront = p->pnext;}

队列应用:层次遍历、计算机系统

原创粉丝点击