理解C ++中链接列表中某些赋值的差异性

时间:2018-05-16 19:08:55

标签: c++ pointers linked-list

我是编程新手,并且已经开始学习链接列表,但是我在理解代码中实际执行的任务时遇到了严重的麻烦。

例如:

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指针中的值的指针?

*source = newNode -> next;为此,source指针获取newNode的地址,并与newNode相关联?

我无法理解这些作业。

PS:此moveNode代码用于合并两个已排序的链接列表。

此外,请详细说明地址通过或存储在上述代码中。

1 个答案:

答案 0 :(得分:0)

此代码将节点从源列表的前面移动到desti列表的前面。

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