求大神解释下

来源:4-2 环形队列实现下

未道修

2016-07-28 12:03

出列的时候传入的参数没有什么用啊。。。而且出列函数的第一行代码感觉是多余的。。。。。而且清空队列也并不是真正的清空对列。。。在内存中的数据也还在,并没有回归到原始的状态。。。。只是访问的方式让我们误以为数据已经清空了而已。

写回答 关注

3回答

  • ziom
    2016-07-30 21:18:22
    已采纳

    不仅出列的第一行代码多余,出列函数的参数也多余,老师这么写是为了方便打印出出列对象,展示队列的特性是先进先出。你能看出第一行多余,说明你已经理解得很好。至于清空队列,我也纳闷。。。但是清空的意义是为了可以继续插入,从这个角度理解就说的通,我是这么理解的。求采纳

    谁记得

    感觉老师这样讲解不好,令人更加迷惑了

    2016-12-15 20:57:30

    共 2 条回复 >

  • MAKER_01
    2016-08-12 11:33:29

    虽然清空之后内存中二进制数据仍旧存在但它已经没有意义了,当你下一次写入内存的时候它就会被覆盖。所以这个清空方式没有影响并且也很方便。

  • qq_wuli咕咕_03625035
    2016-07-29 22:30:53

    #ifndef MYQUEUE_H
    #define MYQUEUE_H
    class MyQueue
    {
    public:
     MyQueue(int queueCapacity);
     virtual ~MyQueue();
     void ClearQueue();//清空
     bool QueueEmpty() const;
     bool QueueFull()const;
     int QueueLength()const;
     bool EnQueue(int element);
     bool DeQueue(int &element);
     void QueueTraverse();//遍历
    private:
     int *m_pQueue;//队列数组指针
     int m_iQueueLen;//队列元素个数
     int m_iQueueCapacity;//队列数组容量
     int m_iHead;
     int m_iTail;
    };


    #endif



    MyQueue::MyQueue(int queueCapacity)
    {
     m_iQueueCapacity = queueCapacity;
     m_pQueue = new int[m_iQueueCapacity];
     ClearQueue();
    }
    MyQueue::~MyQueue()
    {
     delete[]m_pQueue;
     m_pQueue = NULL;


    }
    void MyQueue::ClearQueue()
    {
     m_iHead = 0;
     m_iTail = 0;
     m_iQueueLen = 0;


    }
    bool MyQueue::QueueFull() const
    {
     if (m_iQueueLen == m_iQueueCapacity)
     {
      return true;
     }
     else
     {
      return false;
     }
    }
    bool MyQueue::QueueEmpty() const
    {
     if (m_iQueueLen == 0)
     {
      return true;
     }
     else
     {
      return false;
     }
    }
    int MyQueue::QueueLength()const
    {
     return m_iQueueLen;
    }


    bool MyQueue::EnQueue(int element)
    {
     if (QueueFull())
     {
      return false;
     }
     else
     {
      m_pQueue[m_iTail] = element;
      m_iTail++;
      m_iTail = m_iTail%m_iQueueCapacity;
      m_iQueueLen++;
      return true;
     }
    }
    bool MyQueue::DeQueue(int &element)
    {
     if (QueueEmpty())
     {
      return false;
     }
     else
     {
      element = m_pQueue[m_iHead];
      m_iHead++;
      m_iHead %= m_iQueueCapacity;
      m_iQueueLen--;
      return true;
     }
    }
    void MyQueue::QueueTraverse()
    {
     for (int i = m_iHead; i < m_iQueueLen+ m_iHead; i++)
     {
      cout << m_pQueue[i%m_iQueueCapacity]<<endl;
     }
    }


    int main()
    {
     MyQueue *p = new MyQueue(20);


     p->EnQueue(10);
     p->EnQueue(12);
     p->EnQueue(14);
     p->EnQueue(16);
     p->EnQueue(18);


     p->QueueTraverse();
     cout << endl;


     int e = 0;
     p->DeQueue(e);
     cout << e <<endl;


     p->DeQueue(e);
     cout << e <<endl;
     cout << endl;



     p->QueueTraverse();
     p->ClearQueue();
     cout <<endl;
     p->EnQueue(20);
     p->EnQueue(30);
     p->QueueTraverse();



     delete p;
     p = NULL;


     system("pause");
        return 0;
    }


    未道修

    。。。干嘛把代码给我发一遍啊。。。。。没有解决我的疑问撒

    2016-07-30 10:13:51

    共 1 条回复 >

数据结构探险—队列篇

与现实最为贴近的数据结构-队列,带大家进入数据结构的美妙世界

110035 学习 · 170 问题

查看课程

相似问题