我是编程新手,并且已经开始学习链接列表,但是我在理解代码中实际执行的任务时遇到了严重的麻烦。
例如:
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
代码用于合并两个已排序的链接列表。
此外,请详细说明地址通过或存储在上述代码中。
答案 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