/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
#include <cstddef>
#include <vector>
class Solution {
public:
void reorderList(ListNode *head) {
vector<int> a,b;
ListNode *s=head;
while(s!=nullptr) {
a.push_back(s->val);
s=s->next;
}
if(a.size()<=2)
{
return;
}
s=head;
if(a.size()%2==0)
{
for(int i=a.size()-1;i>a.size()/2-1;i--)
{
s=s->next;
s->val=a[i];
s=s->next;
}
}
else {
for(int i=a.size()-1;i>a.size()/2;i--)
{
s=s->next;
s->val=a[i];
s=s->next;
}
}
for(int i=1;i<=a.size()/2;i++)
{
if(head!=nullptr)
{
head=head->next;
}
if(head->next!=nullptr)
{
head=head->next;
head->val=a[i];
}
}
}
};