/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void reorderList(ListNode *head) {
if(head == NULL)
return;
ListNode * half = head;
ListNode * p = head;
while(p != NULL)
{
p= p->next;
if(p == NULL)
break;
p= p->next;
if(p == NULL)
break;
half = half->next;
}
ListNode * r = NULL;
p = half->next;
half->next = NULL;
ListNode * q;
while(p != NULL)
{
q = p->next;
p->next = r;
r = p;
p = q;
}
while(head != NULL && r != NULL)
{
p = head->next;
head->next = r;
q = r->next;
r->next = p;
head = p;
r = q;
}
}
};
leetcode:Reorder List
最新推荐文章于 2018-04-22 21:11:48 发布