Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.37 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <stdlib.h>
  4. typedef int info_t;
  5. typedef struct element
  6. {
  7.     info_t info;
  8.     struct element *link;
  9. } node;
  10.  
  11. main()
  12. {
  13.     node *p,*q,*r;
  14.     node *mk_link_list(int);
  15.     void printlist (node *);
  16.     node *joinList(node *, node *);
  17.     int n;
  18.  
  19.  
  20.     scanf("%d",&n);
  21.     p=mk_link_list(n);
  22.  
  23.     scanf("%d",&n);
  24.     q=mk_link_list(n);
  25.  
  26.     r=joinList(p,q);
  27.     printlist(r);
  28.     printf("\n\n");
  29. }
  30.  
  31. node *mk_link_list(int n)
  32. {
  33.     node *p=NULL,*q=NULL;
  34.  
  35.     while(n--)
  36.     {
  37.         p=(node *)malloc(sizeof(node));
  38.         p->link=q;
  39.         q=p;
  40.     }
  41.     while(q!=NULL)
  42.     {
  43.         scanf("%d",&q->info);
  44.         q=q->link;
  45.     }
  46.     return(p);
  47. }
  48.  
  49. void printlist (node *p)
  50. {
  51.     node *q = p;
  52.     int n=0, i;
  53.     while(q!=NULL){
  54.         n++;
  55.         q=q->link;
  56.     }
  57.     for(i=0; i<n;i++){
  58.         if(i==(n-1)){
  59.             printf("%d\n", p->info);
  60.             p=p->link;
  61.         }
  62.         else{
  63.             printf("%d ",p->info);
  64.             p=p->link;
  65.         }
  66.     }
  67. }
  68.  
  69. node *joinList(node *p, node *q)
  70. {
  71.     node *r,*s, *k;
  72.     if ((p==NULL)||(q==NULL)) return NULL;
  73.  
  74.     if((p->info)<(q->info))
  75.     {
  76.         s=r=p;
  77.         p=p->link;
  78.     }
  79.     else if((p->info)>(q->info))
  80.     {
  81.         s=r=q;
  82.         q=q->link;
  83.     }
  84.     else{
  85.         s = r = p;
  86.         q =(*q).link;
  87.         p = (*p).link;
  88.     }
  89.  
  90.     while((p!=NULL)&&(q!=NULL))
  91.     {
  92.         if((p->info)<(q->info)){
  93.             if(p->info == r->info){
  94.                 p = p->link;
  95.             }
  96.             else{
  97.                 r->link=p;
  98.                 r=p;
  99.                 p=p->link;
  100.             }
  101.         }
  102.         else if((p->info)>(q->info)){
  103.             if((q->info)==(r->info)){
  104.                 q = q->link;
  105.             }
  106.             else{
  107.                 r->link=q;
  108.                 r=q;
  109.                 q=q->link;
  110.             }
  111.         }
  112.         else if((p->info)==(q->info)){
  113.             if(r==q){
  114.                 p=(*p).link;
  115.             } else {
  116.                 q =(*q).link;
  117.             }
  118.         }
  119.     }
  120. if (p!=NULL)
  121. {
  122.     while(p!=NULL)
  123.     {
  124.         if (p->info==r->info)
  125.         p=p->link;
  126.         else
  127.         {
  128.             r->link=p;
  129.             p=p->link;
  130.             r=r->link;
  131.         }
  132.     }
  133. }
  134.  
  135. if(q!=NULL)
  136. {
  137.     while(q!=NULL)
  138.     {
  139.         if (q->info==r->info)
  140.         {
  141.             q=q->link;
  142.         }
  143.         else
  144.         {
  145.             r->link=q;
  146.             q=q->link;
  147.             r=r->link;
  148.         }
  149.  
  150.     }
  151. }
  152.     if(p!=NULL)
  153.         r->link=p;
  154.     else
  155.         r->link=q;
  156.     return(s);
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement