Advertisement
imashutosh51

Odd Even Linked List

Oct 16th, 2022 (edited)
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. /**
  2.  * Definition for singly-linked list.
  3.  * struct ListNode {
  4.  *     int val;
  5.  *     ListNode *next;
  6.  *     ListNode() : val(0), next(nullptr) {}
  7.  *     ListNode(int x) : val(x), next(nullptr) {}
  8.  *     ListNode(int x, ListNode *next) : val(x), next(next) {}
  9.  * };
  10.  */
  11.  
  12. /*
  13. Logic:
  14. break the linked list into two halves ,one for the odd position and one for even positions.
  15. then join both of them.
  16. */
  17. class Solution {
  18. public:
  19.     ListNode* oddEvenList(ListNode* head) {
  20.         if(!head || !(head->next)) return head;
  21.         ListNode *odd=NULL,*even=NULL;
  22.         odd=head;
  23.         even=head->next;
  24.         ListNode *o=odd,*e=even;
  25.         while(o || e){
  26.             if(o->next && o->next->next){ o->next=o->next->next; o=o->next;}
  27.             if(e->next && e->next->next){ e->next=e->next->next; e=e->next;}
  28.             if(!e->next || !o->next) break;
  29.         }
  30.         e->next=NULL;
  31.         o->next=even;
  32.         return odd;
  33.     }
  34. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement