输入一个链表,反转链表后,输出新链表的表头
思路:
链表的反转 等价于反转链表的指针,只要把原链表中的指针反转,便是链表的反转
比如 原链表中 head指向head.next,先把head.next保存起来(不然改变head的指向后,原链表会断开,找不到下一个节点),然后改变head指向result(新建节点),再用result表示新链表的表头
1>2>3>4
1(result) 2>3>4
1<2(result) 3>4
1<2<3(result) 4
1<2<3<4(result)
//链表节点的定义类
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode result= null; //新链表的表头
ListNode next = null;//保存临时节点
while (head!=null){
next = head.next;
head.next = result; //断掉原来head指向head.next的链,重新定义head指向result的新链
result= head;//result向前移一位 新链表的表头是result
head = next;//head取代原链表的head.next位置
}
return result;
}
}