2015-09-07 54 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) 
      // ^^^^^