https://leetcode.com/problems/reorder-list/description/
就是代码细节了
class Solution {
public:
void reorderList(ListNode* head) {
if(!head || !(head->next)) return;
ListNode* first = head, *second = head,* pre=NULL;
while (first) {
first = first->next;
pre = second;
second = second->next;
if(first) first = first->next;
}
pre->next = NULL;
// reverse second
ListNode *cur=second, *l1 = head, *l2 = pre, *tmp = NULL;
while(cur) {
swap(cur->next, pre);
swap(pre, cur);
}
l2 = pre;
while (l1 && l2) {
tmp = l1->next;
l1->next = l2;
l2 = l2->next;
l1 = l1 -> next;
l1->next = tmp;
l1 = l1 ->next;
}
return;
}
};