创建链表,为什么用函数添加节点会失败?
struct ListNode * NewList(int n) {
struct ListNode * pHead;
pHead = NewNode;
pHead->next = NULL;
struct ListNode * t;
for (int i = 0;i < n - 1;i++) {
AddNodeBefore(pHead);//该行如果替换为AddNodeBefore函数体的内容的话,结果正确;否则结果错误
}
printf_s("链表添加完成的len = %d \n", LenOfList(pHead));
return pHead;
}
void AddNodeBefore(struct ListNode* pHead) {
struct ListNode * t;
t = pHead;
pHead = NULL;
pHead = NewNode;
pHead->next = t;
return;
} RT,用AddNodeBefore函数添加节点的话会失败,链表长度一直为1;相反,把该函数里的内容原封不动的复制到原位置来进行添加操作,就是正常的。为什么?
函数的参数传入的是一个链表指针类型,也就是一块ListNode的内存地址,函数内以这个内存地址为中心进行操作,有什么问题吗?
#C/C++#