我被赋予了这个功能来定义,我有点混淆如何做到这一点。它应该向前或向后打印一个链表。
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
类调用next
,previous
,value
。
答案 0 :(得分:0)
ListNode *p = source;
实际上是无效语法,因为source
不是指针类型。您想要分配地址:
ListNode *p = &source;
// ^
假设您有一个双链表,那么在特定方向上进行的语句将是
p = p->next;
或
p = p->previous;
取决于direction
值的隐含语义。
另请注意,如果您不打算在函数外部看到更改,则为参数提供const
引用就足够了:
void printList(const List& source, bool direction)
// ^^^^^