题目描述
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
运行结果
解题思路
使用三个指针p1,p2,p3
使p2指向p1,之后将三个指针右移(p3只是用来记录p2的后一个元素)
注意点:开始时令p1为空,p2为head
java代码
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode reverseList(ListNode head) { if(head==null || head.next==null){ return head; } ListNode p1=null; ListNode p2=head; while(p2 != null){ ListNode p3=p2.next; p2.next=p1; p1=p2; p2=p3; } return p1; } }