Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Node* mergeSortedLists( Node* head1 , Node* head2){
- Node *result = NULL;
- if (head1 == NULL) {
- return head2;
- }
- if (head2 == NULL) {
- return head1;
- }
- if (head1->data < head2->data) {
- head1->next = mergeSortedLists(head1->next, head2);
- head1->next->prev = head1;
- head1->prev = NULL;
- return head1;
- } else {
- head2->next = mergeSortedLists(head1, head2->next);
- head2->next->prev = head2;
- head2->prev = NULL;
- return head2;
- }
- }
- struct Node *sortDoubly(struct Node *head)
- {
- if(!head || !head->next) return head;
- Node* slow = head;
- Node* fast =head->next;
- while(fast && fast->next){
- fast= fast->next->next;
- slow = slow->next;
- }
- Node* headb = slow->next;
- slow->next = NULL;
- return mergeSortedLists(sortDoubly(head) , sortDoubly(headb));
- }
Add Comment
Please, Sign In to add comment