题目描述
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL  思路
使用三个指针遍历单链表,对每一个链接点的指针进行反转。
p 和 q 指针进行反向,用 r 记录下一个节点,然后从前往后一直进行。
原来的 head 变为尾指针,要令 head 的 next 指向 NULL。
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head == NULL || head->next == NULL)
        {
            return head;
        }
        ListNode *p = head, *r;
        ListNode *q = p->next;
        head->next = NULL;
        while(q != NULL)
        {
            r = q->next;
            q->next = p;
            p = q;
            q = r;
        }
        return p;
    }
};
京公网安备 11010502036488号