Advertisement
Guest User

Untitled

a guest
Jan 15th, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <conio.h>
  5.  
  6. typedef struct nodl {
  7.     char nume_prenume[100], universitate[100];
  8.     struct nodl *urm;
  9. }nodl;
  10.  
  11. typedef struct noda {
  12.     char tara[100];
  13.     nodl *prim;
  14.     struct noda *st, *dr;
  15. }noda;
  16.  
  17. int maxim = 0;
  18. noda *t = NULL;
  19.  
  20. nodl* adaugare_lista(nodl *prim, char nume_prenume[100], char universitate[100])
  21. {
  22.     nodl *q1, *q2, *aux;
  23.  
  24.     aux = (nodl*)malloc(sizeof(nodl));
  25.     strcpy(aux->nume_prenume, nume_prenume);
  26.     strcpy(aux->universitate, universitate);
  27.     aux->urm = NULL;
  28.  
  29.     for (q1 = q2 = prim; q1 != NULL && strcmp(q1->universitate, universitate) < 0; q2 = q1, q1 = q1->urm);
  30.  
  31.     if (q1 == q2)
  32.     {
  33.         aux->urm = prim;
  34.         prim = aux;
  35.     }
  36.     else
  37.     {
  38.         aux->urm = q1;
  39.         q2->urm = aux;
  40.     }
  41.  
  42.     return prim;
  43. }
  44.  
  45. noda* adaugare_arbore(noda *t, char tara[100], char nume_prenume[100], char universitate[100])
  46. {
  47.     if (t == NULL)
  48.     {
  49.         t = (noda*)malloc(sizeof(noda));
  50.         strcpy(t->tara, tara);
  51.         t->prim = NULL; t->st = t->dr = NULL;
  52.         t->prim = adaugare_lista(t->prim, nume_prenume, universitate);
  53.     }
  54.     else
  55.     {
  56.         if (strcmp(t->tara, tara) > 0)
  57.             t->st = adaugare_arbore(t->st, tara, nume_prenume, universitate);
  58.         else if (strcmp(t->tara, tara) < 0)
  59.             t->dr = adaugare_arbore(t->dr, tara, nume_prenume, universitate);
  60.         else
  61.             t->prim = adaugare_lista(t->prim, nume_prenume, universitate);
  62.     }
  63.  
  64.     return t;
  65. }
  66.  
  67. void citire()
  68. {
  69.     char nume_prenume[100], universitate[100], tara[100];
  70.     FILE *f;
  71.     f = fopen("SACI.txt", "rt");
  72.  
  73.     while (!feof(f))
  74.     {
  75.         fscanf_s(f, "%s", nume_prenume, _countof(nume_prenume));
  76.         fscanf_s(f, "%s", universitate, _countof(universitate));
  77.         fscanf_s(f, "%s", tara, _countof(tara));
  78.  
  79.         t = adaugare_arbore(t, tara, nume_prenume, universitate);
  80.     }
  81.     fclose(f);
  82. }
  83.  
  84. void afisare(noda *t)
  85. {
  86.     nodl *q;
  87.     if (t)
  88.     {
  89.         afisare(t->st);
  90.  
  91.         printf("%s", t->tara);
  92.         for (q = t->prim; q != NULL; q = q->urm)
  93.             printf("\n\t\t%s %s", q->universitate, q->nume_prenume);
  94.         printf("\n");
  95.  
  96.         afisare(t->dr);
  97.     }
  98. }
  99.  
  100.  
  101. int main()
  102. {
  103.     int opt;
  104.     char nume[100];
  105.  
  106.     do {
  107.         printf("\n1. Incarcare date.");
  108.         printf("\n2. Afisare date.");
  109.         printf("\n0. Iesire");
  110.         printf("\nAlegere: ");
  111.         scanf("%d", &opt);
  112.  
  113.         switch (opt)
  114.         {
  115.         case 1: citire();
  116.             break;
  117.  
  118.         case 2: afisare(t);
  119.             break;
  120.  
  121.         case 0: break;
  122.         default: printf("Alegere gresita!");
  123.         }
  124.     } while (opt != 0);
  125.  
  126.     return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement