2015-09-07 4 views
-2

Мне дали эту функцию, чтобы определить, и я немного запутался, как это сделать. Предполагается распечатать связанный список вперед или назад.Печать дублированного списка с использованием ссылочной переменной?

void printList(List& source, bool direction) 
{ 

} 

Так что я понимаю, что я буду использовать переменную 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 
    } 
    } 
} 

Кроме того, только так что это не путаница для вас, ребята, я использую другой класс callded ListNode класс, который имеет три значения: next, previous, value.

+0

Почему не 'Const Список & 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) 
      // ^^^^^ 
Смежные вопросы