反转一个链表
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶
递归or迭代的方法(留坑,等理解了再写)
分析
- 循环
遍历链表,修改结点的指针指向前一个结点pre,在修改当前结点的指针指向前一个结点之前,必须记录下一个结点的位置,防止丢失
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* pre = NULL;
while(head != NULL){ //链表不空
ListNode* temp = head->next; //记录当前结点的下一个结点位置
head->next = pre; //修改当前结点的指针,指向前一个结点
pre = head; //结点后移
head = temp;
}
return pre; //返回最后一个结点,即头结点
}
};