题解 | #反转链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
不使用stack的方法,通过三个变量实现链表倒置
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null||head.next==null)return head;
//如果链表是空的或者只有一个值那么直接返回
ListNode pre=head,mid=head.next,beh=head.next.next;
//pre代表前一个,mid代表中间的,beh代表后一个
pre.next=null;//倒置后为最后一个节点,下一跳为null
while(mid!=null){//中间的mid为null时说明到最后了
beh=mid.next;//beh的指针后移
mid.next=pre;//改变指针朝向
pre=mid;//pre指针后移
mid=beh;//mid指针后移
}
return pre;
}
}