求诸位大神解答
如果不用全局遍历,你可以把中间指针传入到递归函数参数中,也能达到类似全局变量的效果。
Node link_reverse(Node p, Node q) { if (q == NULL) return p; Node nq = q->next; q->next = p; return link_reverse(q, nq); }
调用
Node new_head = link_reverse(NULL, link);
递归和数学归纳法差不多,从最简单情况递推下面是伪代码:
单节点的逆序还是单节点:reverse(n1) = n1
两个节点的逆序等于两个交换: reverse(n1->n2) = n2->n1
根据1,n2 等于自己的逆序,所以: reverse(n1->n2) = reverse(n2)->n1
这时已经覆盖了n2不是单个节点时的情况,改写成真正的代码就是递归算法了。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
如果不用全局遍历,你可以把中间指针传入到递归函数参数中,也能达到类似全局变量的效果。
调用
递归和数学归纳法差不多,从最简单情况递推
下面是伪代码:
单节点的逆序还是单节点:reverse(n1) = n1
两个节点的逆序等于两个交换: reverse(n1->n2) = n2->n1
根据1,n2 等于自己的逆序,所以: reverse(n1->n2) = reverse(n2)->n1
这时已经覆盖了n2不是单个节点时的情况,改写成真正的代码就是递归算法了。