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的内存地址,函数内以这个内存地址为中心进行操作,有什么问题吗?
全部评论
(1) 回帖