题解 | #反转链表#

反转链表

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

思路:

1)这道题中需要我们对已有的链表进行翻转,需要知道的一点是翻转链表其实就是翻转.next即可,

2)我们并不需要建立新的链表,不需要浪费新的空间,

3)这就需要我们利用刚学过的双指针法,一个快指针一个慢指针,

4)一位链表的最后一位需要指向null,所以慢指针直接指向null即可 而快指针指向头结点进行遍历即可

5)此时我们在反转next前,应该判断一下链表是否已经翻转完成

6)链表翻转完成时应该就是遍历完成的时候,也就是cur = null的时候,

7)这时候返回pre即可

代码:

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
class Solution {
    public ListNode ReverseList(ListNode head) {
         if(head==null)
             return head;
         ListNode pre=null;
         ListNode cur=head;
         while(cur!=null){
             ListNode temp=cur.next;//暂存下一个节点
             cur.next=pre;//反向
             pre=cur;
             cur=temp;
         }
        return pre;
    }
}
全部评论
该牛油正在参与牛客写题解薅羊毛的活动,牛币,周边,京东卡超多奖品放送,活动进入倒计时!快来捡漏啦https://www.nowcoder.com/discuss/888949?source_id=profile_create_nctrack&channel=-1
点赞 回复 分享
发布于 2022-04-27 12:06

相关推荐

喜欢喜欢喜欢:这是我见过最长最臭的简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务