Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * 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) {}
- * };
- */
- /*
- Logic:
- break the linked list into two halves ,one for the odd position and one for even positions.
- then join both of them.
- */
- class Solution {
- public:
- ListNode* oddEvenList(ListNode* head) {
- if(!head || !(head->next)) return head;
- ListNode *odd=NULL,*even=NULL;
- odd=head;
- even=head->next;
- ListNode *o=odd,*e=even;
- while(o || e){
- if(o->next && o->next->next){ o->next=o->next->next; o=o->next;}
- if(e->next && e->next->next){ e->next=e->next->next; e=e->next;}
- if(!e->next || !o->next) break;
- }
- e->next=NULL;
- o->next=even;
- return odd;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement