Advertisement
gur111

merge employee lists - Itay PVT

Jul 2nd, 2019
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.18 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. typedef struct {
  5.     char * name;
  6.     char * admin;
  7.     char * phone;
  8.  
  9. }* Class;
  10.  
  11. typedef struct emp {
  12.     int id;
  13.     int xp;
  14.     Class class;
  15.     struct emp next;
  16. }* Emp;
  17.  
  18. Emp merge_lists(Emp h1, Emp h2) {
  19.     Emp h, c1, c2, prv;
  20.     int is_first_run = 1;
  21.  
  22.     if (h1 == NULL)
  23.         return h2;
  24.     else if (h2 == NULL)
  25.         return h1;
  26.  
  27.     h = h1->id < h2->id ? h1 : h2;
  28.     c1 = h1;
  29.     while (c1->next != h1)
  30.         ;
  31.     prv = c1;
  32.     c1 = h1;
  33.  
  34.     do {
  35.         if (!is_first_run && c2 == h2)
  36.             break;
  37.         while (c2->id < c1->id) {
  38.             if (!is_first_run && c2 == h2)
  39.                 break;
  40.             is_first_run = 0;
  41.             prv->next = c2;
  42.             prv = c2;
  43.             c2 = c2->next;
  44.             prv->next = c1;
  45.         }
  46.         prv = c1;
  47.         c1 = c1->next;
  48.     } while (c1 != h1);
  49.  
  50.     if (c2 != h2) {
  51.         prv->next = c2;
  52.         while (c2->next != h2)
  53.             ;
  54.         c2->next = h;
  55.     } else {
  56.         while (c1->next != h1)
  57.             ;
  58.         c1->next = h;
  59.     }
  60.  
  61.     return h;
  62. }
  63.  
  64.  
  65.  
  66. Emp add(Emp list, Emp to_add){
  67.     Emp c = list, tmp;
  68.     while(c->next != list){
  69.         if(c->next->id < to_add->id){
  70.             tmp = c->next;
  71.             c->next = to_add;
  72.             to_add->next = tmp;
  73.         }
  74.         c = c->next;
  75.     }
  76.     c->next = to_add;
  77.     to_add->next = c;
  78.     return to_add->id < c->id ? to_add : c;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement