2015-11-13 151 views
0

我目前在學習各種鏈表的隊列和棧。我正在閱讀關於各種隊列功能的一些筆記。我無法理解提供的出隊功能。隊列鏈接列表出隊函數

void CintQueue::Dequeue(int& item) //Remove front Item from the Queue 
{ 
    Node *TempPtr; 

    TempPtr = m_qFront; 
    item = m_qFront->data; 
    m_qFront = m_qFront->next; 
    if (m_qFront == NULL) 
     m_qRear = NULL; 
    delete TempPtr; 
} 

我不明白爲什麼有一個參數被傳遞給出隊。它的目的是什麼?我從代碼中看到它正在從前端節點分配數據值,但函數dequeue沒有返回值,所以我不明白它的用途。有人可以解釋這個功能是如何工作的嗎? 是否需要單獨的函數來獲取從隊列中刪除的值?

+0

看起來更像是一個'pop_front',你可以在這裏刪除頭部元素然後返回它,只有在這裏,而不是返回它,你需要一個輸出參數。 – AndyG

回答

0

函數參數傳遞一個引用。因此,當它在功能獲取設置,它設置這是作爲參數傳遞的變量:您傳遞隊列的第一個對象具有相同類型的變量的引用

CintQueue q; // define queue 
// fill q with ints 
int i; 
q.Dequeue(i); // i is set here 
+0

非常感謝,幫助我比我讀過的筆記更清楚 – user3429270

+0

如果這回答您的問題,請接受它。另外,請在這裏查看對C++標準庫的很好的參考,包括std :: queue:http://en.cppreference.com/w/cpp/container/queue –

0

。在該方法中,第一個項目的數據被保存到這個變量中,然後該項目被刪除。所以你可以得到隊列頭項目的數據,並且只需要一個函數調用就可以刪除它。

將引用傳遞給函數併爲其分配內容是void函數返回某些內容的一種方式。你也可以用一個返回值和沒有參數的方法創建一個具有相同目的的方法。