本题观察重排后链表规律,很容易想到拆分,一前一后,于是想到双端队列deque,用的比较少的一个容器= =
void reorderList(ListNode* head) {
deque<ListNode*>que;//双端队列;
ListNode *cur=head;
if(!cur)
return ;
//将除了头节点以外的所有节点放入双端队列;
while(cur->next)
{
que.push_back(cur->next);
cur=cur->next;
}
cur=head;
int count=0;
ListNode *node;
while(!que.empty())
{
if(count%2==0)//偶数取队尾
{
node=que.back();
que.pop_back();
}
else
{
node=que.front();
que.pop_front();
}
count++;
cur->next=node;
cur=cur->next;
}
cur->next=NULL;
}