解法1:画个图就很明了了,定义两个指针pre和curr,当curr不为空时循环:每次创建个临时指针temp,存放curr后边的节点防止丢链,将当前节点指向pre节点,再将pre移动到curr,curr移动的他的下个节点也就是temp。循环结束pre就是头节点。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode reverseList(ListNode head) { ListNode pre=null; ListNode curr=head; while(curr!=null){ ListNode temp = curr.next; curr.next=pre; pre = curr; curr=temp; } return pre; } }