出隊想不明白!請大佬指導一下。
第一處:參數(shù)為甚么要引用?(首地址?但elment是輸入賦值,對他引用是哪里的首地址?)
第二處:element = m_pQueue[m_iHead],這樣,對頭給了element,m_pQueue[m_iHead]的值怎么就實現(xiàn)了刪除吧?
第一處:參數(shù)為甚么要引用?(首地址?但elment是輸入賦值,對他引用是哪里的首地址?)
第二處:element = m_pQueue[m_iHead],這樣,對頭給了element,m_pQueue[m_iHead]的值怎么就實現(xiàn)了刪除吧?
2019-02-17
舉報
2019-03-11
【1】首先解釋一下參數(shù)為什么要用引用類型?
首先不用參數(shù),直接申明函數(shù)如下:
bool DeQueue( ); // return bool 類型,判斷出隊列操作是否成功,但是不會返回被移出隊列的數(shù)值
那么,傳入引用類型的參數(shù)呢?
bool DeQueue(int& element);
除了return的返回值可以判斷操作是否成功外,我們還可以拿到當前被移出隊列的數(shù)
【2】element = m_pQueue[m_iHead],這樣,對頭給了element,m_pQueue[m_iHead]的值怎么就實現(xiàn)了刪除吧?
element = m_pQueue[m_iHead] ;// 只是將m_pQueue數(shù)組中的m_iHead下標(這兒也是隊列頭)的數(shù)值給了element變量,這樣引用類型的傳參可以獲取到當前被移出隊列的數(shù)值。
? ? ? ? ? ? ?m_iHead++; // 頭后移動一位
??????????? m_iQueueLen--; // 長度減去一位
這兩句才是真正實現(xiàn)了刪除的功能。
2019-02-17
多謝你
2019-02-17
第一處:傳參采用引不引用效果一樣,老師這里是p->Dequeue(XXX);把隊首原先的值的賦值給傳進來的參數(shù)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--;(長度也縮短一位),理解為隊首后移一位(而不是刪除了,那個位置就還是存在的,也符合環(huán)形隊列的特點)
純個人理解,用詞不是很專業(yè),有點啰嗦,希望幫你更好理解。