题目描述:给你一个单链表,返回反转后的链表
思路和数据结构上课时候教的一样
头插法,
下面是主要逻辑的讲解
m=head.next; //把头部用一个 变量 保存起来,因为下面会给head的next赋值
head.next=pre; // 因为要反转,head就会变成尾部,那么head的next就是pre(也就是赋值为null的一个变量值)
pre=head; //之后pre会继续作为@1的next值,所以把pre赋值为head
head = m; // 此时head向单链表的后边移动,@1成为了当前的head;继续进入循环;
java代码如下
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode pre=null;
ListNode m=null;
while(head!=null){
m=head.next;
head.next=pre;
pre=head;
head = m;
}
return pre;
}
}