ulvis.paste.net

Paste Search Dynamic
Recent pastes
Node
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. struct Node
  4. {
  5.     int data;
  6.     struct Node * next;
  7. };
  8. struct Node * create(struct Node * link,int data)
  9. {   struct Node  *head=link;
  10.     if(head==null)
  11.     {
  12.      struct Node* head = (struct Node*)malloc(sizeof(struct Node));
  13.     head->data = data;
  14.    
  15.     head->next=null;
  16.     link=head;
  17.     }
  18.     else
  19.     {  
  20.         while(head->next!=null)
  21.         {
  22.             head=head->next;
  23.         }
  24.        struct Node* tmp = (struct Node*)malloc(sizeof(struct Node));
  25.      
  26.        tmp->data = data;
  27.        tmp->next=null;
  28.        head->next=tmp;
  29.  
  30.  
  31.     }
  32.     return link;
  33. }
  34. void print(struct Node *chain)
  35. {
  36.           while(chain)
  37.     {    //printf("%d","hhh");
  38.         printf("%d\n",chain->data);
  39.         chain=chain->next;
  40.     }
  41.    
  42. }
  43. int getCount(struct Node* head)
  44. {
  45.     struct Node* current = head;
  46.     int count = 0;
  47.  
  48.     while (current != null) {
  49.         count++;
  50.         current = current->next;
  51.     }
  52.  
  53.     return count;
  54. }
  55. struct Node* _getIntesectionNode(int d, struct Node* head1, struct Node* head2)
  56. {
  57.     int i;
  58.     struct Node* current1 = head1;
  59.     struct Node* current2 = head2;
  60.     struct Node* ptr;
  61.     struct Node* tmp= head2;
  62.     struct Node *res=null;
  63.    
  64.  
  65.     for (i = 0; i < d; i++) {
  66.         if (current1 == null) {
  67.             return null;
  68.         }
  69.         res=create(res,current1->data);
  70.         current1 = current1->next;
  71.     }
  72.     int f=0;
  73.     while (current1 != null && current2 != null) {
  74.         if (current1 == current2 && f==0)
  75.            {
  76.                 
  77.                 //return current1->data;
  78.                    f=1;
  79.                    ptr=current2;
  80.    
  81.        
  82.                 
  83.            }
  84.         res=create(res,current1->data);
  85.         current1 = current1->next;
  86.         current2 = current2->next;
  87.     }
  88.  
  89.   while(tmp!=ptr)
  90.   { res=create(res,tmp->data);
  91.         tmp=tmp->next;
  92.   }
  93.     return res;
  94. }
  95. struct Node* getIntesectionNode(struct Node* head1, struct Node* head2)
  96. {
  97.     int c1 = getCount(head1);
  98.     int c2 = getCount(head2);
  99.     int d;
  100.    
  101.     if (c1 > c2) {
  102.         d = c1 - c2;
  103.         return _getIntesectionNode(d, head1, head2);
  104.     }
  105.     else {
  106.         d = c2 - c1;
  107.         return _getIntesectionNode(d, head2, head1);
  108.     }
  109. }
  110. struct Node * findchain(struct Node *Chain1,struct Node * Chain2)
  111.  {  
  112.     return getIntesectionNode(Chain1,Chain2);
  113.  }
  114.  
  115.  
  116. int main(void) {
  117.         // your code goes here
  118.          struct Node* chain1=null;
  119.     chain1=create(chain1,1);
  120.     chain1=create(chain1,2);
  121.     chain1=create(chain1,3);
  122.     chain1=create(chain1,99);
  123.     chain1=create(chain1,45);
  124.     chain1=create(chain1,56);
  125.     struct Node* chain2=null;
  126.     chain2=create(chain2,78);
  127.     chain2=create(chain2,33);
  128.  
  129.     //merge;
  130.     chain2->next->next=chain1->next->next->next;
  131.    
  132.  
  133.     //result
  134.     struct Node* chain3=null;
  135.     chain3=create(chain3,1);
  136.     chain3=create(chain3,2);
  137.     chain3=create(chain3,3);
  138.     chain3=create(chain3,99);
  139.     chain3=create(chain3,45);
  140.     chain3=create(chain3,56);
  141.     chain3=create(chain3,78);
  142.     chain3=create(chain3,33);
  143.     struct Node* chain4=null;
  144.     chain4=findchain(chain1,chain2);
  145.     print(chain4);
  146.    
  147.         return 0;
  148. }
  149.  
Parsed in 0.020 seconds