反转链表

反转链表`

1. 初始版本

在初始版本里面定义了4个变量:

  1. reverseHead:定义反转后链表的头部,即原链表的尾部;
  2. cur :定义当前节点,从head开始,这个可以不用定义,完全可以用head复用,纯粹为了方便看和理解;
  3. newNext :也就是原链表里的pre节点,成为新链表的next节点,有人会将其命名为pre;
  4. tmp:cur.next一方面遍历用,也就是原链表的next;

其中3,4不可缺,1,2 可缺;

public class Solution {
    public ListNode ReverseList(ListNode head) {
        ListNode reverseHead =null;  
        ListNode cur = head;
        ListNode newNext =null;
        ListNode tmp = null;
        while (cur !=null){
            tmp =cur.next;
            cur.next=newNext;
            if(tmp==null)
                reverseHead = cur;
            newNext = cur;
            cur=tmp;
        }
        return reverseHead;
 
    }
}

2.三个变量

public class Solution {
    public ListNode ReverseList(ListNode head) {
    
        ListNode reverseHead =null;
        ListNode newNext =null;
        ListNode tmp = null;
        
        while (head !=null){
            tmp =head.next;
            head.next=newNext;
            if(tmp==null)
                reverseHead = head;
            newNext = head;
            head=tmp;
        }
        return reverseHead;
 
    }
}

3.2个变量

public class Solution {
    public ListNode ReverseList(ListNode head) {
    
        ListNode newNext =null;
        ListNode tmp = null;
        while (head !=null){
            tmp =head.next;
            head.next=newNext;
    
            newNext = head;
            head=tmp;
        }
        return newNext;
 
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值