思路:
ListNode* reverse(ListNode* head){ListNode* ans{};while (head){ListNode* tmp = head->next;head->next = ans;ans = head;head = tmp;}return ans;
}
- 首先使用tmp记住原始节点的下一个位置,因为需要对原先节点的next指针进行操作,如果不记录此节点的存储位置,就会导致数据的缺失
- 保存了先前的节点的next之后,就可以放心使用先前节点的next指针,将其指向一个新创建的指针,此时这个指针还未初始化,因此指向的是nullptr,保证了链的末尾指向空这一条件
- ans是每个翻转节点进行衔接的节点,因此ans需要移动位置
- 让head指向先前的tmp;tmp记录head 的next,这三个节点之间是一个闭环的结构
- 牢记此顺序