首页 > 其他 > 详细

反转一个单链表

时间:2020-06-18 14:59:52      阅读:72      评论:0      收藏:0      [点我收藏+]

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

 

解题心路:

迭代好说,递归:

第一思路将后面的全部翻转好,再将最后一个元素的next指向当前。

返回最后一个元素的指针,那就有:

当前节点指针:head

已经翻转的尾指针:p

p->next = head; 

head->next = null;

这样一顿操作是可以翻转但是丢了头指针。

LeetCode 里面的的儿子们的经典思路:

1.返回头指针,p。p一直不变指向翻转后的链表的头。

2.那怎么知道返回后的链表的尾指针呢,因为只有知道了尾指针我才能把新节点加进去。

3.从思路说起,翻转函数的功能是   翻转前面的节点并返回头结点指针。其余的东西不做任何改变。

4.既然没有改变那么head原来指向的节点也没有改变,前面的翻转后head 还是指向 head->next.而它就是尾。

5.这样一来就好操作了  head->next->next = head;   head->next=NULL;

6.解释一下就是将head变成新的尾,并让原来的尾指向它。

7.完

反转一个单链表

原文:https://www.cnblogs.com/xiongxinxzy/p/13157522.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!