反转链表,想到把头指向null,头的后一位的next指向头,依次类推,后一位的next指向前一位。
需要3个链表,一个用来存输入的链表(yuan),一个用来保存当前链表位置,还可以先用来表示null,还用来输出反转的链表(ss),还有一个用来保存原来数的.next位置(tmp)。
ListNode yuan=head,ss=null;
while(yuan!=null){
ListNode tmp=yuan.next; //先保存yuan的next节点
yuan.next=ss; //把yuan的next指向ss,最开始为1,也就是1此时指向尾Null,
ss=yuan; 把yuan当前节点保存一下,保存1,下次yuan的next会指向这个ss,也就是1
yuan=tmp; //这时候把之前保存的next节点又赋值给当前节点结束本次循环,此时为2,下次会把2.next指向之前保存1的ss,也就是现在的1,成功把1的后续节点2指向1,并把1指向了null;null<--1<--2
}
力扣上的代码
class Solution {
public ListNode reverseList(ListNode head) {
ListNode yuan=head,ss=null;
while(yuan !=null){
ListNode tmp=yuan.next;
yuan.next=ss;
ss=yuan;
yuan=tmp;
}
return ss;
}
}