使用引用变量打印出双向链表?

时间:2015-09-07 14:17:10

标签: c++ pointers linked-list

我被赋予了这个功能来定义,我有点混淆如何做到这一点。它应该向前或向后打印一个链表。

void printList(List& source, bool direction)
{

}

所以我理解我会在if语句中使用direction变量,但我不知道如何处理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
    }
  }
}

另外,对于你们来说,我没有混淆我正在使用另一个具有三个值的ListNode类调用nextpreviousvalue

1 个答案:

答案 0 :(得分:0)

ListNode *p = source;

实际上是无效语法,因为source不是指针类型。您想要分配地址:

ListNode *p = &source;
           // ^

假设您有一个双链表,那么在特定方向上进行的语句将是

p = p->next;

p = p->previous;

取决于direction值的隐含语义。

另请注意,如果您不打算在函数外部看到更改,则为参数提供const引用就足够了:

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