luca_mazz1

Differenza simmetrica

May 18th, 2018
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct List{
  5.     int key;
  6.     struct List* next;
  7. }
  8.  
  9. typedef struct List* List;
  10.  
  11. //creazione di un nodo
  12. List newElem(int k){
  13.     List temp= (List)malloc(sizeof(List));
  14.     temp->key= k;
  15.     temp->next= NULL;
  16.    
  17.     return temp;
  18. }
  19.  
  20. //inserimento in testa
  21. void addHead(List L, int k){
  22.     List toAdd= newElem(k);
  23.     if(L != NULL){
  24.         toAdd->next= L;
  25.         L= toAdd;
  26.     }
  27.     else L= toAdd;
  28. }
  29.  
  30. //funzione di ricerca
  31. int search(List L, int k){
  32.     if(L != NULL){
  33.         if(L->key == k) return 1;
  34.         else return search(L->next, k);
  35.     }
  36.    
  37.     return 0;
  38. }
  39.  
  40.  
  41. List diffSimm(List L1, List L2){
  42.     if(L1 && L2){
  43.         List L3= NULL;
  44.         L3->next= diffSimm(L1->next, L2->next);
  45.  
  46.         if(!search(L1, L2->key))
  47.             addHead(L3, L2->key);
  48.  
  49.         if(!search(L2, L1->key))
  50.             addHead(L3, L1->key);
  51.     }
  52.    
  53.     return L3;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment