亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求大神解釋下

出列的時候傳入的參數沒有什么用啊。。。而且出列函數的第一行代碼感覺是多余的。。。。。而且清空隊列也并不是真正的清空對列。。。在內存中的數據也還在,并沒有回歸到原始的狀態。。。。只是訪問的方式讓我們誤以為數據已經清空了而已。

正在回答

3 回答

不僅出列的第一行代碼多余,出列函數的參數也多余,老師這么寫是為了方便打印出出列對象,展示隊列的特性是先進先出。你能看出第一行多余,說明你已經理解得很好。至于清空隊列,我也納悶。。。但是清空的意義是為了可以繼續插入,從這個角度理解就說的通,我是這么理解的。求采納

1 回復 有任何疑惑可以回復我~
#1

未道修 提問者

Thanks
2016-07-31 回復 有任何疑惑可以回復我~
#2

誰記得

感覺老師這樣講解不好,令人更加迷惑了
2016-12-15 回復 有任何疑惑可以回復我~

雖然清空之后內存中二進制數據仍舊存在但它已經沒有意義了,當你下一次寫入內存的時候它就會被覆蓋。所以這個清空方式沒有影響并且也很方便。

0 回復 有任何疑惑可以回復我~

#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;
}


0 回復 有任何疑惑可以回復我~
#1

未道修 提問者

。。。干嘛把代碼給我發一遍啊。。。。。沒有解決我的疑問撒
2016-07-30 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

求大神解釋下

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號