王道2_2_25
题目大意
给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
思路
- 先找到中间节点,q用两次next,p用一次next,等q为空,那么p就是中间节点
- 对p后面的节点进行头插法,形成逆序,如123456,变成123465,*注意是465*
- 然后进行断链,形成1234和65两条链
- 最后进行和链162534
代码实现
1 | void reorderList(ListNode* head) { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.