sandeep03edu

Untitled

Jun 29th, 2022
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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