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

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

出隊想不明白!請大佬指導一下。

https://img1.sycdn.imooc.com//5c683e8700013ebc07410518.jpg


第一處:參數為甚么要引用?(首地址?但elment是輸入賦值,對他引用是哪里的首地址?)

第二處:element = m_pQueue[m_iHead],這樣,對頭給了element,m_pQueue[m_iHead]的值怎么就實現了刪除吧?

正在回答

3 回答

【1】首先解釋一下參數為什么要用引用類型?

首先不用參數,直接申明函數如下:

bool DeQueue( ); // return bool 類型,判斷出隊列操作是否成功,但是不會返回被移出隊列的數值

那么,傳入引用類型的參數呢?

bool DeQueue(int& element);

除了return的返回值可以判斷操作是否成功外,我們還可以拿到當前被移出隊列的數

【2】element = m_pQueue[m_iHead],這樣,對頭給了element,m_pQueue[m_iHead]的值怎么就實現了刪除吧?

element = m_pQueue[m_iHead] ;// 只是將m_pQueue數組中的m_iHead下標(這兒也是隊列頭)的數值給了element變量,這樣引用類型的傳參可以獲取到當前被移出隊列的數值。

? ? ? ? ? ? ?m_iHead++; // 頭后移動一位
??????????? m_iQueueLen--; // 長度減去一位

這兩句才是真正實現了刪除的功能。

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

多謝你

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

qq_超越_21

我覺得這里用引用不是多余的,如果你在外部需要用到出隊的那個值,就應該傳引用或者指針來保存這個出隊的值
2019-02-25 回復 有任何疑惑可以回復我~

第一處:傳參采用引不引用效果一樣,老師這里是p->Dequeue(XXX);把隊首原先的值的賦值給傳進來的參數element,只是賦值給它,(先把隊首元素賦值給element,再隊首后移一位,為什么老師要把原來隊首的值進行賦值給別人,隊首再后移,我個人覺得多余)后面并沒有用到,其實也可以這樣寫:

bool Dequeue()//出隊
??? {
??????? if(QueueEmpty())
??????? {
??????????? return false;
??????? }
??????? else
??????? {
??????????? m_iHead++;
??????????? m_iHead=m_iHead%m_iQueueCapacity;
??????????? m_iQueueLen--;
??????????? return true;
??????? }
??? }

第二處:通過m_iHead++;指針后移,相當于隊首元素m_pQueue[m_iHead]后移一位,m_iQueueLen--;(長度也縮短一位),理解為隊首后移一位(而不是刪除了,那個位置就還是存在的,也符合環形隊列的特點)


純個人理解,用詞不是很專業,有點啰嗦,希望幫你更好理解。

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

舉報

0/150
提交
取消

出隊想不明白!請大佬指導一下。

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

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

幫助反饋 APP下載

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

公眾號

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