/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ #include <iterator> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ ListNode* oddEvenList(ListNode* head) { // 分开存储所有奇数偶数节点 vector<ListNode*> jiShu; vector<ListNode*> ouShu; bool isJishu = true; while (head != nullptr) { if (isJishu) { jiShu.push_back(head); isJishu = false; } else { ouShu.push_back(head); isJishu = true; } head = head->next; } // 使用新的头节点先链接所有奇节点在链接偶节点 auto newNode = ListNode(0); auto* temp = &newNode; for (auto it : jiShu) { temp->next = it; temp = temp->next; } for (auto it : ouShu) { temp->next = it; temp = temp->next; } // 最后temp指向nullptr temp->next = nullptr; return newNode.next; } };