Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.11 KB | None | 0 0
  1. //setul 1 problema 1
  2.  
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6.  
  7. //Se citesc datele despre elevii unei clase, respectiv numele şi data naşterii. Să se ordoneze elevii în ordinea crescătoare după data naşterii şi să se afişeze această situaţie
  8.  
  9. typedef struct data
  10. {
  11.   int zi, luna, an;
  12. } Data;
  13.  
  14. typedef struct elev
  15. {
  16.   char nume[20];
  17.   Data datan;
  18. } Elev;
  19.  
  20. typedef struct list{
  21.     struct list* next;
  22.     Elev elev;
  23. } List;
  24.  
  25. List* add_list(List* head, Elev elev)
  26. {
  27.     if(head == NULL) {
  28.         head = (List*) malloc(sizeof(List));
  29.         strcpy(head->elev.nume, elev.nume);
  30.         head->elev.datan.zi = elev.datan.zi;
  31.         head->elev.datan.luna = elev.datan.luna;
  32.         head->elev.datan.an = elev.datan.an;
  33.         head->next = NULL;
  34.         return head;
  35.     }
  36.  
  37.     List* aux = head;
  38.     while(aux->next != NULL) {
  39.         aux = aux->next;
  40.     }
  41.  
  42.     List* new_element = (List*) malloc(sizeof(List));
  43.     strcpy(new_element->elev.nume, elev.nume);
  44.     new_element->elev.datan.zi = elev.datan.zi;
  45.     new_element->elev.datan.luna = elev.datan.luna;
  46.     new_element->elev.datan.an = elev.datan.an;
  47.     new_element->next = NULL;
  48.  
  49.     aux->next = new_element;
  50.  
  51.     return head;
  52. }
  53.  
  54. void print_elevi(List* head)
  55. {
  56.     while(head != NULL) {
  57.         printf("Nume: %s\n", head->elev.nume);
  58.         head = head->next;
  59.     }
  60. }
  61.  
  62. List* delete_list(List* head, char nume[])
  63. {
  64.     if(strcmp(head->elev.nume, nume) == 0) {
  65.         return head->next;
  66.     }
  67.     List* aux = head;
  68.  
  69.     while(aux != NULL && strcmp((aux->next)->elev.nume, nume) != 0)
  70.     {
  71.         aux = aux->next;
  72.     }
  73.  
  74.     if(aux == NULL || aux->next == NULL)
  75.         return head;
  76.  
  77.     aux->next = (aux->next)->next;
  78.     return head;
  79. }
  80. // void sort_elevi(Elev* e, int n)
  81. // {
  82. //
  83. // }
  84.  
  85. int
  86. main ()
  87. {
  88.  int n, i;
  89.  
  90.   Elev aux;
  91.   printf ("Numarul de elevi:");
  92.   scanf ("%d", &n);
  93.   List* head = NULL;
  94.  
  95.   for (i = 0; i < n; i++)
  96.   {
  97.       scanf("%s %d %d %d", aux.nume, &aux.datan.an, &aux.datan.luna, &aux.datan.zi);
  98.       head = add_list(head, aux);
  99.   }
  100.  
  101.   //sort_elevi(v_elevi.elevi, v_elevi.current_dim);
  102.   print_elevi(head);
  103.   printf("A doua afisare\n");
  104.   delete_list(head, (char*)"Alex");
  105.   print_elevi(head);
  106.  
  107.   return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement