题目:
输入一个链表,反转链表后,输出新链表的表头。
思路:
代码:
/*
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)
{
return null;
}
//pre表示head的前一个节点
ListNode pre=null;
//next表示head的后一个节点
ListNode next=null;
//一直循环到head为空
while(head!=null)
{
//为了防止链表断裂,先储存后一个节点
next=head.next;
//让head的下一个节点指向前一个节点,也就是实现了反转
head.next=pre;
//因为要继续向下再一次循环执行,所以移位,可看附图进行理解
pre=head;
head=next;
}
//当head为空的时候,pre已经是最后一个元素了,也就是现在链表的表头
return pre;
}
}