C++代码:定义三个指针变量,cur,nex,head2,思路就是将链表分开为奇偶两部分,cur,和nex分别指向当前节点和下一个节点,当nex的下一个节点为NULL 终止循环,head指向第二个节点(如果有的话);
时间复杂度O(nodes);
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode* oddEvenList(ListNode* head) { 12 if(head==NULL||head->next==NULL) return head; 13 ListNode* cur; 14 ListNode* nex; 15 ListNode* head2; 16 cur=head;nex=head->next;head2=nex; 17 int flag=1; 18 while(nex->next!=NULL){ 19 cur->next=nex->next; 20 cur=nex;nex=nex->next; 21 flag=-flag; 22 } 23 cur->next=NULL; 24 25 if(flag==1){ 26 cur->next=head2; 27 }else{ 28 nex->next=head2; 29 } 30 return head; 31 } 32 };
效果一般般:
leetcode 134 奇偶链表 Odd Even Linked List
原文:https://www.cnblogs.com/joelwang/p/10446879.html