题目链接:https://leetcode-cn.com/problems/odd-even-linked-list/
题目如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
if(head==NULL||head->next==NULL) return head;
ListNode* oddHead=new ListNode();
auto oddTail=oddHead;
ListNode* evenHead=new ListNode();
auto evenTail=evenHead;
//每次将节点放进去,其中初始化链表节点时,head只用于指向,tail用于实际操作,且tail=head
auto p=head;
bool flag=true;
while(p){
if(flag==true){
oddTail->next=p;
oddTail=p;
flag=false;
}else {
evenTail->next=p;
evenTail=p;
flag=true;
}
p=p->next;
}
oddTail->next=evenHead->next;
evenTail->next=NULL;
return oddHead->next;
}
};