[24]反转链表
1.题目
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
输入:
1->2->3->4->5->NULL
输出:
5->4->3->2->1->NULL
2.思路
- 备份head->next【新建一个next节点】
- 修改head->next【将head->next指向new_head】
- 移动 head 和 new_head
代码视频
3.代码
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *new_head = NULL;
while(head)
{
ListNode *next = head->next; // 1.备份head->next
head->next = new_head; // 2.修改head->next
new_head = head; // 3.移动new_head 和 head
head = next;
}
return new_head;
}