为了账号安全,请及时绑定邮箱和手机立即绑定
  • #include<iostream>

    using namespace std;


    class Myqueue

    {

    public:

    Myqueue(int capcaity);//初始化队列

    ~Myqueue();

    int get_length();  //获取队列元素个数

    bool judge_empty();  //判断队列是否为空

    bool judge_full();  //判断队列是否为满

    bool in_ele(int x);   //入栈

    bool out_ele(int &x);  //出栈

    void tra_ele();   //遍历

    void clear_queue();  //清空

    private:

    int m_length;  //队列元素个数

    int m_capacity;   // 队列元素容量

    int m_head;   //队列首部元素编号

    int m_tail;   // 队列尾部元素编号

    int *my_queue;  //定义队列指针

    };

    Myqueue::Myqueue(int capacity)

    {

    m_capacity = capacity;

    my_queue = new int[m_capacity];

    if (my_queue == NULL)

    {

    cout << "the applicatiao ofstorage for my_queue is failed" << endl;

    }

    m_head = 0;

    m_tail = 0;

    m_length = 0;

    }


    Myqueue::~Myqueue()

    {

    delete[]my_queue;

    my_queue = NULL;

    }


    int Myqueue::get_length()

    {

    return m_length;

    }


    bool Myqueue::judge_empty()

    {

    if (m_length == 0)

    {

    cout << "the queue is empty" << endl;

    return true;

    }

    return false;

    }


    bool Myqueue::judge_full()

    {

    if (m_length == m_capacity)

    {

    cout << "the queue is full"<<endl;

    return true; 

    }

    return false;

    }


    bool Myqueue::in_ele(int x)

    {

    if (judge_full())

    {

    return false;

    }

    my_queue[m_tail] = x;

    m_tail++;

    m_length++;

    if (m_tail == m_capacity)

    m_tail = 0;

    return true;

    }


    bool Myqueue::out_ele(int &x)

    {

    if (judge_empty())

    {

    return false;

    }

    x = my_queue[m_head];

    m_head++;

    m_length=m_length-1;

    if (m_head == m_capacity)

    m_head = 0;

    return true;

    }


    void Myqueue::tra_ele()

    {

    int num = m_head;

    for (int i = m_head; i<m_head+m_length; i++)

    {

    if (num == m_capacity)

    {

    num = 0;

       }

    cout << my_queue[num] << endl;

    num++;

    }

    }


    void Myqueue::clear_queue()

    {

    m_head = 0;

    m_tail = 0;

    m_length = 0;

    }


    int main()

    {

    int out_ele;

    Myqueue *lis =new Myqueue(5);

    lis->in_ele(11);

    lis->in_ele(12);

    lis->in_ele(14);

    lis->in_ele(8);

    lis->in_ele(20);

    lis->tra_ele();

    cout << endl;


    lis->out_ele(out_ele);

    lis->tra_ele();

    cout << endl;


    lis->out_ele(out_ele);

    lis->tra_ele();

    cout << endl;


    lis->in_ele(14);

    lis->in_ele(8);

    lis->tra_ele();

    cout << endl;


    lis->in_ele(20);

    return 0;

    }


    查看全部
  • 1.每次队列插入一个新元素,队列长度应该+1。m_iQueueLen++;

       每次队列取出一个元素    ,队列长度应该-1。m_iQueueLne--;

    2.对于环形队列,经过一圈后又从0开始(因此要求 模%):

        入队:m_ ihead =m_ ihead %m_ iQueuecapacity;

        出队:m_itail   = m_i tail   %m_iQueuecapacity;

        遍历队列时,是从队头开始遍历的,而有时候队头不是指向位置0,指向其他位置 。另外,对于环形队列,当遍历完一圈后又从0开始

     for(int i = 0; i <  m_iQueueLen; ++i)

            cout << m_pQueue[(i+m_iHead)%m_iQueueCapacity] << endl;

        

    查看全部
  • 插入元素:每次插入之前需要判断队列是否已满。插入元素从队尾开始                     

                     插入。每插入一个,队尾指向下一个位置。

    取出元素:每次取出之前需要判断队列是否为空。取出元素从队头开始

                      取出,每取出一个,队头指向下一个位置;

    队列中空出的位置,队列为又可以插入新的元素


    查看全部
  • 05:47 初始化 申请内存

    7:20 析构函数 销毁队列 内存回收

    查看全部
  • 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。



    查看全部
    0 采集 收起 来源:课程简介

    2019-08-17

  • 队列:

    FIFO:first in first out

    先进先出

    查看全部
    0 采集 收起 来源:队列

    2019-07-12

  • 队列:先入先出FIFO,分为普通队列和环形队列。普通队列的空间利用没有环形队列充分,环形队列的复杂度比普通队列复杂。



    查看全部
    0 采集 收起 来源:队列

    2019-07-01

  • FIFO
    查看全部
    0 采集 收起 来源:队列

    2019-06-28

  • 环形队列的声明

    查看全部
  • 先入先出

    普通队列:浪费内存(不移动),处理速度慢(各位都前移一位)

    环形队列:充分利用内存空间

    查看全部
    1 采集 收起 来源:队列

    2019-05-08

  • 环形队列类声明

    查看全部
  • 普通队列示例

    查看全部
    1 采集 收起 来源:队列

    2019-04-03

  • 队列:先进先出 FIFO :first in first out

    查看全部
    0 采集 收起 来源:队列

    2019-04-03

  • MyQueue.cpp2

    查看全部
  • MyQueue.cpp1

    查看全部

举报

0/150
提交
取消
课程须知
本课程是程序世界中的核心课程 由于本门课程是以C++为编码实现的,所以需要大家熟练掌握C++语言基础语法。
老师告诉你能学到什么?
1、什么是数据结构、什么是队列以及队列的实现原理 2、如何设计队列的类,如何完善类的设计 3、如何实现队列的相关函数 4、如何检验代码的正确性,如何完善代码 5、如何与实际相结合,利用数据结构解决实际问题

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!