Advertisement
nicb

ESERCIZIO ESAME ALBERO CON LISTA SIMULATA CON ARRAY

Feb 1st, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.53 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. ///Stuttura
  5. typedef struct stringa
  6. {
  7.     char parole[50];
  8. }stringa;
  9. typedef struct info
  10. {
  11.     stringa lettera[50];
  12. }info;
  13. typedef struct albero
  14. {
  15.     char riferimento;
  16.     info dato;
  17.     int pos_corr;
  18.     struct albero *dx,*sx;
  19.  
  20. }albero;
  21. typedef albero *palbero;
  22. void carica_info(palbero ,char * );
  23. void stampa_info(char );
  24. palbero crea_albero();
  25. palbero inserisci(palbero p,int n);
  26. void visualizza(palbero p);
  27. void visualizza_contenuto(palbero p);
  28. int main()
  29. {
  30.     palbero nodo;
  31.     char app[50];
  32.     char lettera='A';
  33.     int i,n;
  34.     nodo=crea_albero();
  35.     for(i=0;i<26;i++)
  36.     {
  37.         nodo=inserisci(nodo,i);
  38.         lettera++;
  39.     }
  40.     printf("\nQuanti nomi vuoi inserire?: ");
  41.     fflush(stdin);
  42.     scanf("%d",&n);
  43.     for(i=0;i<n;i++)
  44.     {
  45.         system("cls");
  46.         printf("\nInserisci il %d nome: ",i+1);
  47.         fflush(stdin);
  48.         fgets(app,50,stdin);
  49.         carica_info(nodo,app);
  50.     }
  51.     visualizza_contenuto(nodo);
  52.     return 0;
  53. }
  54.  
  55. palbero crea_albero()
  56. {
  57.     return NULL;
  58. }
  59.  
  60. palbero inserisci(palbero p,int i)
  61. {
  62.     if(p==NULL)
  63.     {
  64.         palbero app;
  65.         app=(palbero)calloc(1,sizeof(albero));
  66.         app->riferimento='A'+i;
  67.         app->pos_corr=0;
  68.         return app;
  69.     }
  70.     else if(p->riferimento>'A'+i)
  71.     {
  72.         p->sx=inserisci(p->sx,i);
  73.         return p;
  74.  
  75.     } else
  76.     {
  77.         p->dx=inserisci(p->dx,i);
  78.         return p;
  79.     }
  80. }
  81. void stampa_info(char dato)
  82. {
  83.     printf("\t%c",dato);
  84. }
  85. void visualizza(palbero p)
  86. {
  87.     if(p!=NULL)
  88.     {
  89.         visualizza(p->sx);
  90.         stampa_info(p->riferimento);
  91.         visualizza(p->dx);
  92.     }
  93. }
  94.  
  95. void carica_info(palbero p,char *app)
  96. {
  97.  
  98.     if(p->riferimento==app[0])
  99.     {
  100.         if(p->pos_corr<50)
  101.         {
  102.             strcpy(p->dato.lettera[p->pos_corr].parole,app);
  103.             p->pos_corr++;
  104.         }
  105.         else
  106.         {
  107.             printf("\n\tSISTEMA DI PROTEZIONE OVERFLOW!\n");
  108.             system("pause");
  109.         }
  110.  
  111.     } else if (app[0]>p->riferimento)
  112.         carica_info(p->dx,app);
  113.         else
  114.             carica_info(p->sx,app);
  115. }
  116. void visual_stringa(palbero p)
  117. {
  118.     int i;
  119.     for(i=0;i<p->pos_corr;i++)
  120.         printf("\nLETTERA DI APPARTENENZA: %c\tNOME: %s",p->riferimento,p->dato.lettera[i].parole);
  121.  
  122.  
  123. }
  124. void visualizza_contenuto(palbero p)
  125. {
  126.     if(p!=NULL)
  127.     {
  128.         visualizza_contenuto(p->sx);
  129.         visual_stringa(p);
  130.         visualizza_contenuto(p->dx);
  131.     }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement