sandeep03edu

Untitled

Jun 29th, 2022
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  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.  
  10. ListNode* reverse(ListNode* A){
  11.     ListNode *prev = NULL, *current = A, *next = NULL;
  12.    
  13.     while(current){
  14.         next = current -> next;
  15.         current -> next = prev;
  16.        
  17.         prev = current;
  18.         current = next;
  19.     }
  20.    
  21.     return prev;
  22. }
  23.  
  24. ListNode* Solution::reorderList(ListNode* A) {
  25.     if(A==NULL) return NULL;
  26.    
  27.     ListNode *dum = A;
  28.     int length = 0;
  29.     while(dum){
  30.         length++;
  31.         dum = dum -> next;
  32.     }
  33.     // cout<<"length: "<<length<<endl;
  34.    
  35.     dum = A;
  36.     ListNode *rev = reverse(dum);
  37.     ListNode *finalHead = NULL;
  38.     ListNode *finalTail = NULL;
  39.    
  40.     for(int i=0; i<length; ++i){
  41.         ListNode *added;
  42.         if(i%2==0){
  43.             added = dum;
  44.             if(dum)
  45.                 dum = dum -> next;
  46.         }
  47.         else{
  48.             added = rev;
  49.             if(rev)
  50.                 rev = rev -> next;
  51.         }
  52.        
  53.         if(added){
  54.             added -> next = NULL;
  55.         }
  56.        
  57.         if(finalHead==NULL){
  58.             finalHead = added;
  59.             finalTail = added;
  60.         }
  61.         else{
  62.             finalTail -> next = added;
  63.             finalTail = added;
  64.         }
  65.     }
  66.    
  67.     return finalHead;
  68. }
  69.  
Advertisement
Add Comment
Please, Sign In to add comment