这个题需要对指针理解的比较到位。然后方法就很直接:奇数的连起来,偶数的连起来,最后拼在一起。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* oddEvenList(ListNode* head) { if(head==NULL||head->next==NULL||head->next->next==NULL) return head; ListNode *odd=head,*even=head->next,*even_head=even; while(even&&even->next){ odd->next=even->next; odd=odd->next; even->next=even->next->next; even=even->next; } odd->next=even_head; return head; } };
时间: 2024-12-22 05:36:13