签到

05月06日
尚未签到

共有回帖数 0

    李小主任

    等级:
    面上理解,队列就是一个队列一样的数据结构 -_-!
    那就想象一下排队买火车票吧,你到了售票窗口,你要从队尾排到这个队伍里,当轮到你买票时,你就是这个队列的队头了,当你买完票,你要从你队头的位置离开;这其实也就是队列这种数据结构的操作原则——先进先出,队尾插入,队头删除。
    说起来队列和栈都是一样的,只不过操作方式不一样, 所以很好理解。
    队列也有五种基本操作:队尾插入,队头删除,判断是否为空,访问队头元素还有构造函数。而这几种基本操作和栈的基本操作的作用都是一样的,首先判断队列是否为空是否为满,再进行插入、删除、访问队头元素操作,而构造函数的作用和栈的构造函数作用一样,也是建立队列并将队列初始化为空。
    队列的实现一般用循环队列的方式实现。所谓循环队列,就是可以把队列看作一个环,首尾相接。


    剩下的就是队列的实现了:
    typedef int Queue_entry;//定义int的别名为Queue_entryconst int maxqueue=10;//定义队列的最大容量为10class Queue//定义队列的类
    {
    public:
    Queue();
    bool empty() const;
    Error_code serve();
    Error_code append(const Queue_entry &item);
    Error_code retrieve(Queue_entry &item)const;
    private:
    int count;
    int frount,rear;
    Queue_entry entry[maxstack];
    };Queue::Queue()//构造函数,用来创建队列并初始化为空
    {
    count=0;
    rear=maxqueue-1;
    frount=0;
    }bool Queue::empty()const//判断队列是否为空
    {
    return count==0;
    }Error_code Queue::append(const Queue_entry &item)//队尾插入
    {
    if(count=maxqueue)
    return overflow;
    count++;
    rear=rear+1;
    entry[rear]=item;
    return success;
    }Error_code Queue::serve()//队头删除
    {
    if(count=0)
    return underflow;
    count--;
    frount=frount+1;
    return success;
    }Error_code Queue::retrieve(Queue_entry &item)const//访问队头元素
    {
    if(count=0)
    return underflow;
    item=entry[frount];
    return success;
    } 本人新菜一个,语言表达不清楚,图画的也不是很准确,请大神轻喷~

    其实感觉Allen Weiss的表达方式不错 简单直接
    struct QueueRecord{

    int Rear;
    int Front;
    int Capacity;
    int CurrentSize;
    ElementType *Array;
    };

    楼主 2016-04-28 11:10 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知