Трудность в понимании некоторых заданий в связанном списке в C ++ - PullRequest
0 голосов
/ 16 мая 2018

Я новичок в программировании и начал изучать связанные списки, но у меня возникли серьезные проблемы с пониманием того, что на самом деле делают некоторые задания в коде.

Например:

void moveNode(node** desti, node** source) {
    struct node* newNode = *source;
    assert (newNode != NULL);
    *source = newNode -> next;
    newNode -> next = *desti;
    *desti = newNode;

Как и в node* newNode = *source, newNode - это указатель, указывающий на значение в source pointer?

*source = newNode -> next;, для этого указатель source получает адрес newNode, связавшись с newNode?

Я не могу понять эти задания.

PS: этот код moveNode предназначен для объединения двух отсортированных связанных списков.

Также, пожалуйста, проясните, когда адрес передается или сохраняется в приведенном выше коде.

1 Ответ

0 голосов
/ 17 мая 2018

Этот код перемещает узел от начала списка источников к началу списка удалений.

void moveNode(node** desti, node** source) {
    struct node* newNode = *source;
    // Now newNode points to the first node of the source list
    assert (newNode != NULL);
    // assert if source is empty
    *source = newNode -> next;
    // Pop first node from source by making it point to the next node
    newNode -> next = *desti;
    // Add newNode to the front of the desti list
    *desti = newNode;
    // Lengthen desti by pointing to the new first node
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...