leetcode单链表反转
单链表反转
题目链接:![https://leetcode.cn/problems/reverse-linked-list/]
要反转单链表,需要三个变量,用于记录已反转的链表,待反转的链表,待反转的链表的头节点的下一节点(便于找到下一步待反转的链表)。
题解:
ListNode* reverseList(ListNode* head)
{if (head == nullptr)return nullptr;ListNode* p, *q, *r;p = nullptr;q = head;while (q != nullptr){r = q->next;q->next = p;p = q;q = r;}return p;
}
刚开始已经反转的链表为nullptr,待反转的链表头节点为head。在循环中,我们不断更新这三个变量的值,进行反转操作。循环的终止条件是待反转的链表为空。我们返回已经反转完成的链表的头节点。