[exercises]合并两个有序链表——二级指针在递归中的传参
【将两个有序链表合并成一个有序链表】
发现一个递归的实现,与自己的方法有些差别,借鉴后,修改到自己的代码时,出现了一个问题,使得报“无权限访问错误”,后发现在递归时,为含有二级指针参数的函数赋值时,类型不匹配,但是由于传递的都是地址,造成的传参错误的问题。
正确代码如下:
pNode_t MergeLinkRecursion(pNode_t* pHead1, pNode_t* pHead2) {
if ((*pHead1) == NULL) {
return (*pHead2);
}
if ((*pHead2) == NULL) {
return *pHead1;
}
if ((*pHead1)->data < (*pHead2)->data) {
// 传递参数时要注意参数的匹配,尤其是地址;函数参数类型为二级指针,要传一级指针变量的地址
(*pHead1)->pNext = MergeLinkRecursion((&(*pHead1)->pNext), pHead2);
return *pHead1;
}
else {
(*pHead2)->pNext = MergeLinkRecursion(pHead1, &((*pHead2)->pNext));
return *pHead2;
}
}