zoukankan      html  css  js  c++  java
  • 队列

    template<class Elem>
    //用数组实现的队列
    class AQueue:public Queue<Elem>

    {
    private:
    int size;
    int front;
    int rear;
    Elem *listArray;
    public:
    AQueue(int sz=DefaultListSize)
    {
    size=sz+1;
    rear=0;front=1;
    listArray=new Elem[size];
    }
    ~AQueue()
    {
    delete [] listArray;
    }
    void clear()
    {
    front=rear;
    }
    bool enqueue(const Elem& it)
    {
    if(((rear+2)%size)==front) return false;
    rear=(rear+1)%size;
    listArray[rear]=it;
    return true;
    }
    bool dequeue(Elem & it)
    {
    if(length()==0) return false;
    it=listArray[front];
    front=(front+1)%size;
    return true;
    }
    bool frontValue(Elem & it) const
    {
    if(length()==0) return false;
    it=listArray[front];
    return true;
    }
    virtual int length() const
    {
    return ((rear+size)-front+1)%size;
    }
    };


    #include "LList.h"
    template<class Elem>
    //用链表实现的队列
    class LQueue:public Queue<Elem>

    {
    private:
    Link<Elem> *front;
    Link<Elem> *rear;
    int size;
    public:
    LQueue(int sz=DefaultListSize)
    {
    front=NULL;rear=NULL;size=0;
    }
    ~LQueue()
    {
    clear();
    }
    void clear()
    {
    while(front!=NULL)
    {
    rear=front;
    front=front->next;
    delete rear;
    }
    rear=NULL;
    size=0;
    }
    bool enqueue(const Elem & it)
    {
    if(rear==NULL)
    front =rear=new Link<Elem>(it,NULL);
    else
    {
    rear->next=new Link<Elem>(it,NULL);
    rear=rear->next;
    }
    size++;
    return true;
    }

    bool dequeue(Elem &it)
    {
    if(size==0) return false;
    it=front->element;
    Link<Elem>* ltemp=front;
    front=front->next;
    delete ltemp;
    if(front==NULL)
    rear=NULL;
    size--;
    return true;
    }

    bool frontValue(Elem & it) const
    {
    if(size==0) return false;
    it=front->element;
    return true;
    }
    virtual int length() const
    {
    return size;
    }
    };
    Live together,or Die alone!
  • 相关阅读:
    python_捕获异常
    requests二次封装_捕获异常
    python_flask模块
    python_redis模块
    python_requests模块
    使用pstack和gdb调试死锁
    如何编写go代码
    GDB调试命令手册
    core文件相关
    shared_ptr的线程安全性
  • 原文地址:https://www.cnblogs.com/hzhida/p/2354745.html
Copyright © 2011-2022 走看看