SalmaYasser

Flatten a Multilevel Doubly Linked List

Dec 18th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. Node* flatten(Node* head) {
  2.  
  3. Node *cur = head;
  4.  
  5. while (cur)
  6. {
  7. if (cur -> child == nullptr)
  8. {
  9. cur = cur -> next ;
  10. continue;
  11. }
  12.  
  13. Node *end_cur_child = cur -> child;
  14.  
  15. while (end_cur_child -> next != nullptr)
  16. {
  17. end_cur_child = end_cur_child -> next;
  18. }
  19.  
  20.  
  21. Node *save_next = cur -> next;
  22. cur -> next = cur -> child;
  23. cur -> child -> prev = cur;
  24. end_cur_child -> next = save_next;
  25. if (save_next)
  26. save_next -> prev = end_cur_child;
  27. cur -> child = nullptr;
  28.  
  29. cur = cur -> next ;
  30.  
  31. }
  32. return head;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment