剑指offer-15:反转链表
反转即将链表的所有节点的next指针指向前驱节点,单链表需要额外的指针保存前驱节点,同时改变当前节点的next指针前,需保存其后继节点。
由于只遍历一次链表,时间复杂度为O(n)。
具体代码如下:
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode *prev = nullptr;
ListNode *cur = pHead;
while(cur){
ListNode *next = cur->next;
cur->next = prev;
prev = cur; //opps
cur = next;
}
return prev;
}
};