首页 > 创建链表,为什么用函数添加节点会失败?
头像
江蕙在吃黑凤梨
编辑于 2021-01-13 14:12
+ 关注

创建链表,为什么用函数添加节点会失败?

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) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐