2014-12-06 4 views
-1

Есть ответ на Java, но ищет что-то, что относится к C++. Этот код работает (вроде), но переходит в бесконечный цикл. Любые предложения очень ценятся!Как зеркалировать связанный список в C++

void mirror(ListType & list) { 

    ListType listMirror = NULL; 
    Node *p = list; 

    listMirror = p; 
    listMirror->next = NULL; 
    Node *q = listMirror; 

    while (list->next != NULL){ 
     p = p->next; 
     listMirror = p; 
     q = listMirror->next; 
     p->next; 
     if (p = q)(list->next = NULL); 
    } 
    list->next = listMirror; 
} 
+0

Side Примечание: Используйте nullptr. NULL устарел. – Silicomancer

+0

Может быть, его только меня, но чтение этого кода сбивает с толку и боль. Как вы думаете, 'p-> next,' делать? – Silicomancer

ответ

0
void mirror(ListType & list) { 

    ListType listMirror = NULL; 
    Node *p = list; 

список из «ListType» типа и р имеет тип «Узел», это вызывает неопределенное поведение (так как, по-видимому он компилирует) на время цикла.

изменить это

Node *p = list; 

, чтобы указать на первый элемент списка

Node *p = list.firstMemeber()//this is an example, refer to your documentation 
+0

Извините, надо было упомянуть, что «ListType» эквивалентен «typedef Node * ListType». – humpdawg1331

 Смежные вопросы

  • Нет связанных вопросов^_^