题目描述
输入一个链表,反转链表后,输出新链表的表头。
示例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; } }