Advertisement
Garey

algorithm_dll_merge

Mar 26th, 2018
505
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct Node {
  6.     int key;
  7.     struct Node *next;
  8.     struct Node *prev;
  9. } *start1 = nullptr, *start2 = nullptr;
  10.  
  11.  
  12. struct Node * merge_list(struct Node * head1, struct Node * head2)
  13. {  
  14.     struct Node* head3 = nullptr;
  15.     struct Node* p1 = head1;
  16.     struct Node* p2 = head2;
  17.     struct Node* p3 = nullptr;
  18.  
  19.     while (p1 != nullptr || p2 != nullptr)
  20.     {  
  21.         struct Node * tmp = nullptr;
  22.         if (p1 == NULL) {
  23.             tmp = p2;
  24.             p2 = NULL;
  25.         } else if (p2 == nullptr) {
  26.             tmp = p1;
  27.             p1 = NULL;
  28.         }
  29.  
  30.         if ((p1 != nullptr) && (p2 != nullptr)) {
  31.             if (p1->key < p2->key) {
  32.                 tmp = p1;
  33.                 p1 = p1->next;
  34.             } else {
  35.                 tmp = p2;
  36.                 p2 = p2->next;
  37.             }
  38.         }
  39.  
  40.         if (head3 == nullptr) {
  41.             head3 = tmp;
  42.         } else {
  43.             p3->next = tmp;
  44.             tmp->prev = p3;
  45.         }
  46.         p3 = tmp;
  47.     }
  48.     return head3;
  49. }
  50.  
  51.  
  52. int main() {
  53.  
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement