首页 > 其他 > 详细

[LC]206题 Reverse Linked List (反转链表)(链表)

时间:2019-09-24 19:52:20      阅读:95      评论:0      收藏:0      [点我收藏+]

①英文题目

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL

②中文题目

反转一个单链表。

示例:

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

③思路

   用头插法(我暂时还不确定头插法是个啥,尾插法是个啥具体流程)

   同tempnode率先保存住正确的指向,再改掉curr.next的指向。再把已经被“改动过的curr”给赋值给pre,

④代码

 1 class Solution {
 2     public ListNode reverseList(ListNode head) {
 3         ListNode pre=null;
 4         ListNode curr;
 5         ListNode tempnode=null;
 6         curr=head;
 7         while(curr!=null){
 8             tempnode=curr.next;
 9             curr.next=pre;      //每个循环里有4步,这4步里,就只有这一行是在改指针指向,即让curr.next指向pre。
10             pre=curr;
11             curr=tempnode;    
12         }            //4步总结下来就是先用tempnode保存住curr,next,再把curr.next指向pre(curr.next不再指向原来的某某某),
13         return pre;      //接上一句,然后,把已经更改过指向的curr赋值并覆盖掉原来的pre,最后把tempnode保存的以前的curr.next
14     }                   //赋给如今的curr。
15 }

⑤推导过程(画图)

我只推导了第1、2次循环,如下

技术分享图片

⑥学到的东西

    这个跟高中时学的杯子换水的过程有点相似。

    要注意一个顺序,先把curr.next给改了指向,再把改动后的这次这个curr赋给pre。

    最后返回的是pre。

[LC]206题 Reverse Linked List (反转链表)(链表)

原文:https://www.cnblogs.com/zf007/p/11579914.html

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