Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. /*
  2. Insert Node in a doubly sorted linked list
  3. After each insertion, the list should be sorted
  4. Node is defined as
  5. struct Node
  6. {
  7. int data;
  8. Node *next;
  9. Node *prev;
  10. }
  11. */
  12. Node* SortedInsert(Node *head,int data)
  13. {
  14.  
  15. // Complete this function
  16. // Do not write the main method.
  17.  
  18. // create a new node
  19. Node *insert = new Node;
  20. insert->data = data;
  21. insert->next = NULL;
  22. insert->prev = NULL;
  23.  
  24.  
  25. if ( head == NULL)
  26. {
  27. head = insert;
  28. return insert;
  29. }
  30. else if ( insert->data <= head->data) // insert as a first node
  31. {
  32. insert->next = head;
  33. head->prev = insert;
  34. head = insert;
  35. return head;
  36. }
  37. else
  38. {
  39. Node *previous = head;
  40. Node *current = head->next;
  41. while (current != NULL) // selen: current->next != NULL
  42. {
  43. if (previous->data <=insert->data &&insert->data <= current->data )
  44. {
  45. previous->next = insert;
  46. insert->prev = previous;
  47. insert->next = current;
  48. current->prev = insert;
  49. return head;
  50. }
  51. previous=current;
  52. current = current->next;
  53. }
  54.  
  55. // insert to the end of the list
  56. previous->next = insert; // selen: current->next = insert;
  57. insert->prev = previous; // selen: insert->prev = current;
  58. return head;
  59.  
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement