328. 奇偶链表
题目链接:328. 奇偶链表
代码如下:
/**
* 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==nullptr||head->next==nullptr) {return head;}
//声明两个队头,用于后续分离链表
ListNode *oddHead=new ListNode(),*poddHead;
poddHead=oddHead;
ListNode *evenHead=new ListNode(),*pevenHead;
pevenHead=evenHead;
int count=1;
while(head)
{
//分离当前节点
ListNode* temp=head;
head=head->next;
temp->next=nullptr;
if(count%2!=0)//插入到奇数队列中
{
temp->next=poddHead->next;
poddHead->next=temp;
poddHead=temp;
}
else//插入到偶数队列中
{
temp->next=pevenHead->next;
pevenHead->next=temp;
pevenHead=temp;
}
count++;
}
//连接两个链表
poddHead->next=evenHead->next;
poddHead=oddHead->next;
delete oddHead;
delete evenHead;
return poddHead;
}
};