struct Node * leftright(struct Node **head,struct Node *mid)
{ struct Node *temp=*head;
struct Node *ret[2];
ret[0] = malloc( sizeof(temp));
ret[1] = malloc( sizeof(temp));
while((temp->next)!=mid)
{
temp=temp->next;
}
temp->next=NULL;
(ret)->next=*head;
ret[1]->next =mid;
printList(ret[0]->next);
printList(ret[1]->next);
return ret[0];
}
在此代码中,分隔左右子列表以进行合并排序。 我使用了结构指针数组。但是为什么在这种情况下ret不会对第一个元素进行deacying。 如果我使用(* ret) - > next = * head;或者ret [0]代码有效。
此外,如果我使用"(* ret) - > next = * head;"版本和使用指针算术"((* ret)+1) - > next = mid;"我没有打印出正确的清单。 我可能怀疑* ret减少到(* ret)[2]。但是为什么会发生这种情况而不是简单的衰变让我感到困惑。
由于