题目描述
反转一个单链表。
示例:
输入: 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;
    }
}