奇数位,不是节点数值的奇偶性,第一遍弄错了

最简单的方式就是使用两个队列,一个放奇数位的一个放偶数位的,但是按照题目的要求,不是按照奇偶数值来进行分类的话,那么就没必要使用队列了,因为位置都是固定的

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* oddEvenList(ListNode* head) {
        // write code here
        queue<ListNode*> odd, even;
        ListNode* cur = head;
        int idx = 0;
        while(cur){
            if((idx & 1) == 0){
                even.push(cur);
            }else odd.push(cur);
            cur = cur->next;
            idx++;
        }
        if(odd.empty() || even.empty()) return head;

        ListNode*odd_cur = new ListNode(0), *even_cur = new ListNode(0);
        ListNode* odd_head = odd.front();
        
        while(!odd.empty()){
            ListNode* tmp = odd.front();
            odd_cur->next = tmp;
            odd_cur = odd_cur->next;
            odd.pop();
        }
        ListNode* enev_head = even.front();
        while(!even.empty()){
            ListNode* tmp = even.front();
            even_cur->next = tmp;
            even_cur = even_cur->next;
            even.pop();
        }
        odd_cur->next = nullptr;
        even_cur->next = odd_head;
        return enev_head;
    }
};