1.原题
2.思路
双指针
有点不太准确的比喻,两数交换的思路
1.定义一个cur指针,指向头节点
2.定义一个pre指针,初始化为NULL
3.定义一个tmp指针,存放cur->next节点
将cur->next 指向pre指针
反转后的链表:
3.整体代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *tmp;
ListNode *pre = NULL;
ListNode *cur = head;
while(cur)
{
tmp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
};