题意:
        给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。
        注意是节点的编号而非节点的数值。
方法:
模拟

思路:
        直接模拟。
        第一次遍历链表,新建奇数位节点,加入新链表;
        第二次遍历链表,新建偶数位节点,加入新链表;
        最后,返回新链表即可。

        

class Solution {
public:
    
    ListNode* oddEvenList(ListNode* head) {
        if(head==nullptr)
            return head;
        ListNode *h=nullptr,*tail,*p,*q;//新建链表
        p=head;//初始化
        while(p){//遍历并新建奇数位节点,加入新链表
            q=new ListNode(p->val);
            if(h==nullptr){//尾插法
                h=q;
            }else{
                tail->next=q;
            }
            tail=q;
            if(p->next)
                p=p->next->next;
            else
                break;
        }
        p=head->next;
        while(p){//遍历并新建偶数位节点,加入新链表
            q=new ListNode(p->val);
            tail->next=q;
            tail=q;
            if(p->next)
                p=p->next->next;
            else
                break;
        }
        return h;//返回新链表
    }
};


时间复杂度:
空间复杂度: