Advertisement
Guest User

ESAME0906ELE

a guest
Mar 21st, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DIM 50
  4.  
  5. struct nodo {
  6. char nome [DIM];
  7. char cognome [DIM];
  8. int matricola;
  9. struct nodo *next;
  10. };
  11.  
  12.  
  13. struct nodo *aggiungi (struct nodo *testa) {
  14. if (testa==NULL){
  15.     printf("La lista e' vuota!\n");
  16.     testa=malloc(sizeof(struct nodo));
  17.     printf("inserisci nome del primo studente\n");
  18.     fgets(testa->nome,DIM,stdin);
  19.     printf("inserisci cognome del primo studente\n");
  20.     fgets(testa->cognome, DIM, stdin);
  21.     printf("inserisci matricola del primo studente\n");
  22.     scanf("%d",&testa->matricola);
  23.     }
  24. else {
  25.     struct nodo *p=NULL;
  26.     p=testa;
  27.  
  28.     while(p!=NULL) {
  29.             p=malloc(sizeof(struct nodo));
  30.             printf("inserisci nome e cognome dello studente\n");
  31.             fgets(p->nome, DIM, stdin);
  32.             fgets(p->cognome, DIM, stdin);
  33.             printf("inserisci matricola dello studente\n");
  34.             scanf("%d",&p->matricola);
  35.             p=p->next;
  36.     }
  37.  
  38. }
  39. return testa;
  40.  
  41. };
  42.  
  43. void visualizzalista (struct nodo *testa) {
  44. struct nodo *p=NULL;
  45.  
  46. if(testa==NULL){
  47.     printf("La lista e' vuota!");
  48.     }
  49. else{
  50.         p=testa;
  51.         while (p!=NULL) {
  52.                 printf("Visualizza nome e cognome dello studente %s %s\n", p->nome, p->cognome);
  53.                 fgets(p->nome, DIM, stdin);
  54.                 fgets(p->cognome, DIM, stdin);
  55.                 printf("Visualizza matricola dello studente %d\n", p->matricola);
  56.                 scanf("%d", &p->matricola);
  57.                 }
  58. if (p==NULL) {
  59.     printf("siamo arrivati alla fine della lista\n");
  60. }
  61. }
  62. }
  63.  
  64.  
  65. struct nodo *elimina (struct nodo *testa) {
  66. int matricolacercata;
  67. if (testa==NULL) {
  68.     printf("La lista e' vuota!\n");
  69.     }
  70. else    {
  71.     struct nodo *p=NULL;
  72.     struct nodo *prec=NULL;
  73.     p=testa;
  74.  
  75.         while (p!=NULL && p->matricola!=matricolacercata) {
  76.         p=p->next;
  77.         }
  78.     if (p=NULL) {
  79.         printf("il valore cercato non e' presente nella lista\n");
  80.     }
  81.     else {
  82.         printf("Ho trovato il valore da eliminare\n");
  83.         prec->next=p->next;
  84.         free(p);
  85.     }
  86.  
  87. }
  88. return testa;
  89. };
  90.  
  91.  
  92. int main()
  93. {
  94.     struct nodo *testa=NULL;
  95.     int scelta=-1;
  96.     while(scelta!=0) {
  97.         printf("MENU\n0. esci\n1.inseriscistudente\n2.visualizzalista\n3.eliminastudente\nSCELTA:\n");
  98.         scanf("%d",&scelta);
  99.         switch (scelta) {
  100.                 case 0: printf("ESCI dal programma!\n");
  101.                     break;
  102.                 case 1: testa= aggiungi(testa);
  103.                     break;
  104.                 case 2: visualizzalista(testa);
  105.                     break;
  106.                 case 3: testa=elimina(testa);
  107.                     break;
  108.                 default: printf("scelta non corretta!\n");
  109.  
  110.                 }
  111.     }
  112.     return 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement