求一个方法,用递归将链表逆序,并返回逆序的结果,除了用全局变量

发布于 2022-09-02 10:51:58 字数 14 浏览 19 评论 0

求诸位大神解答

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云淡风轻 2022-09-09 10:51:58

如果不用全局遍历,你可以把中间指针传入到递归函数参数中,也能达到类似全局变量的效果。

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);

樱桃奶球 2022-09-09 10:51:58

递归和数学归纳法差不多,从最简单情况递推
下面是伪代码:

  1. 单节点的逆序还是单节点:reverse(n1) = n1

  2. 两个节点的逆序等于两个交换: reverse(n1->n2) = n2->n1

  3. 根据1,n2 等于自己的逆序,所以: reverse(n1->n2) = reverse(n2)->n1

这时已经覆盖了n2不是单个节点时的情况,改写成真正的代码就是递归算法了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文