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!
  • 相关阅读:
    LLVM 笔记(二)—— PHI node
    Ubuntu,sublime快速启动
    ubuntu14.04安装Thinkphp
    ubuntu,scrapy安装
    ubuntu,sublime text 3中文输入的问题
    ubuntu安装beatifulsoup,pip,creepy
    ubuntu,系统设置无法打开
    Ubuntu14.04安装完成的基本配置
    在Sublime Text 3中添加snippet
    领航工作室启用新域名啦!
  • 原文地址:https://www.cnblogs.com/hzhida/p/2354745.html
Copyright © 2011-2022 走看看