一:题目
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
二:解题思路
就是最基础的反转列表,定义两个指针,一个指向空,一个指向head即可
ListNode* pre=NULL;
ListNode* cur=head;
然后开始遍历这个链表,为了防止修改next后找不到位置,我们需要一个新的指针存储位置
然后遍历修改即可
总代码:
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* pre=NULL;
ListNode* cur=head;
while (cur) {
ListNode* next = cur->next;
cur->next = pre;
pre = cur;
cur = next;
}
return pre;
}
};