leetcode之反转链表
2022/3/9
题目简述:
(题源力扣)
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
?
限制:
0 <= 节点个数 <= 5000
经典链表反转,采用双指针方法按序遍历完成翻转即可。其中,q代表当前执行操作的节点位置,p代表当前前驱节点(初始设为NULL),r代表当前后继节点。
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* q = head;
ListNode* p = NULL;
while(q != NULL){
ListNode *r = q -> next; // 指向当前节点的后继节点
q -> next = p; // 指向当前前驱节点
p = q; // 反转后头节点移动
q = r; // 指针操作位置移动
}
return p; // 返回反转后链表头节点
}
};