Advertisement
Motocelium

Numere lipsa

Nov 22nd, 2024 (edited)
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct NOD{
  5.     int nr;
  6.     struct NOD *next;
  7. }NOD;
  8.  
  9. NOD *creare_nod(int nr){
  10.     NOD *nod_nou = malloc(sizeof(NOD));
  11.     nod_nou -> nr = nr;
  12.     nod_nou -> next = NULL;
  13.     return nod_nou;
  14. }
  15.  
  16. NOD *adauga_numar(NOD *head, int nr){
  17.     NOD *nr_nou = creare_nod(nr), *nod = head;
  18.    
  19.     if(head == NULL)
  20.         return nr_nou;
  21.     if(head -> nr > nr){
  22.         nr_nou -> next = head;
  23.         return nr_nou;
  24.     }
  25.     while(nod->next && nod ->next ->nr < nr) nod = nod-> next;
  26.     nr_nou -> next = nod->next;
  27.     nod -> next = nr_nou;
  28.    
  29.     return head;
  30. }
  31.  
  32. int numere_lipsa(NOD *head, int n){
  33.     int nr = head -> nr - 0;
  34.     NOD *nod = head;
  35.     for(; nod -> next; nod = nod -> next){
  36.         if(nod -> next -> nr - nod -> nr > 1)
  37.             nr += (nod -> next -> nr - nod -> nr -1);
  38.     }
  39.     nr += n - nod->nr;
  40.     return nr;
  41. }
  42. int main(){
  43.     int n, nr = 0, num;
  44.     NOD *numere = NULL;
  45.     scanf("%d", &n);
  46.    
  47.     while(scanf("%d", &num) != EOF){
  48.         numere = adauga_numar(numere, num);
  49.     }
  50.    
  51.     nr = numere_lipsa(numere, n);
  52.     printf("%d", nr);
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement