题解 | #反转链表#

反转链表

http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

指针原地解法

利用指针原地改变指针方向,设一个pre指针,最开始指向null,一个cur指针指向head,

  1. 不断通过遍历cur, 改变cur.next的值,遍历过程中更新cur和pre的值;
  2. 在循环中设一个指针记录cur指针的next值;
  3. 直到cur为null跳出循环; 废话少说,上图:

alt

由于每次都要改动cur.next的值,所以每次要用一个变量来记录下来,(我这里把变量定义在了循环外面,当然也可以放在循环内部)代码如下

public class Solution {
    public ListNode ReverseList(ListNode head) {
     //设立三个指针,一个cur指向当前节点,一个pre指示当前节点的前驱,一个temp记录cur的值
        //返回pre指针,
        ListNode cur = head;
        ListNode pre = null;
        ListNode temp = null;
        while(cur!=null){
            temp = cur.next;
            cur.next = pre;     //注意循环里,最后一个一次循环的时候指向最后节点的指针是pre
            pre = cur;
            cur = temp;
        }
        return pre;
    }
}
全部评论
该牛油正在参与牛客写题解薅羊毛的活动,牛币,周边,京东卡超多奖品放送,活动进入倒计时!快来捡漏啦https://www.nowcoder.com/discuss/888949?source_id=profile_create_nctrack&channel=-1
点赞 回复 分享
发布于 2022-04-20 15:53

相关推荐

12-02 16:21
中南大学 Java
点赞 评论 收藏
分享
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务