代码随想录:
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* temp; // 保存cur的下一个节点
ListNode* cur = head;
ListNode* pre = NULL;
while(cur) {
temp = cur->next; // 保存一下 cur的下一个节点,因为接下来要改变cur->next
cur->next = pre; // 翻转操作
// 更新pre 和 cur指针
pre = cur;
cur = temp;
}
return pre;
}
};
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode * temp;//用于保存遍历指针的下一个结点,防止断链
ListNode *cur=head;//遍历指针
ListNode *pre = NULL;//倒序要添加的节点
while(cur){
temp = cur->next;
cur->next = pre;
pre = cur;//pre始终指向后面要链接第一个指针
cur = temp;
}
return pre;//最后pre=temp,只要cur不为空,pre指向的是头指针
}
};