2015-09-07 52 views
-2

我被賦予了這個函數來定義,我有點困惑做如何做到這一點。它應該向前或向後打印鏈表。使用參考變量打印出一個雙向鏈表?

void printList(List& source, bool direction) 
{ 

} 

所以我明白,我會用direction變量在if語句,但我不知道與source變量是什麼。這是我的猜測:

void printList(List& source, bool direction) 
{ 
    ListNode *p = source; 

    if(direction) 
    { 
    while(p) 
    { 
    cout << p->value<< " "; 
    p->next 
    } 
    } 

    else 
    { 
    while(p) 
    { 
    cout << p->value<< " "; 
    p->next 
    } 
    } 
} 

也正好,所以沒有爲你們我使用另一個類callded ListNode類有三個值困惑:nextpreviousvalue

+0

爲什麼不'常量名單,source'作爲參數實際?無論如何,'p-> next'不是一個有效的語句。 –

+1

你可能是指'p = p-> next;'和'p = p-> previous;'。 – TartanLlama

+0

我注意到你會經常在這裏問低質量的問題。我迫切地建議您閱讀所有[幫助中心]的文章(http://stackoverflow.com/help/asking)如何在將來提出好問題。儘管我喜歡你的頭像,但對提高你的問題質量沒有多大幫助:-P ... –

回答

0
ListNode *p = source; 

實際上是無效的語法,由於source不是指針類型。你要分配的地址:

ListNode *p = &source; 
      //^

假設你有一個雙向鏈表,語句在一個特定的方向前進將取決於

p = p->next; 

p = p->previous; 

隱含了direction值的語義。


還要注意,這是足以提供該參數的const參考,如果你不打算具有的功能外看到的變化:

void printList(const List& source, bool direction) 
      // ^^^^^