题目描述
输入一个链表,反转链表后,输出新链表的表头。
示例1
输入
{1,2,3}
返回值
{3,2,1}
解题思路
该题最后的总结就是利用链表的本质,新增节点进行对节点进行记录和拼接即可。具体的注释在代码中给出
总结下来就是:初始一个头结点。遍历链表,把链表的当前节点插入到头结点的前边,并更新头结点。直至链表最后即可
*java代码实现 * 12ms 9820KB

/*
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=null;
        ListNode next=null;
        while(head!=null){
            //先记录当前节点的next节点
            next=head.next;
            //让当前节点的next为现在已有的反转的链表
            head.next=pre;
            //已有链表的头结点为当前节点
            pre=head;
            //当前节点右移
            head=next;
        }
        return pre;
    }
}