Advertisement
nicb

carica e stampa una LISTA e inserimento in mezzo

Jan 30th, 2018
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.70 KB | None | 0 0
  1. //carica e stampa una lista e inserimento in mezzo
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. typedef struct lista
  7. {
  8.     int dato;
  9.     struct lista *next;
  10. }lista;
  11.  
  12. lista* crea_testa();
  13. lista* carica(lista *p, int i);
  14. void visualizza(lista *testa);
  15. void inser_mezzo(lista *p);
  16.  
  17. int main()
  18. {
  19.     lista *testa, *p;
  20.     testa= (lista *)calloc(1, sizeof(lista));
  21.     int n,i;
  22.     printf("Inserisci il numero di elementi da inseirire nella lista: ");
  23.     scanf("%d",&n);
  24.     if (n==1)
  25.     {
  26.         testa=crea_testa();
  27.         //p=testa;
  28.     }
  29.  
  30.     else
  31.     {
  32.  
  33.          testa=crea_testa();
  34.          p=testa;
  35.          for (i=1;i<n;i++)
  36.          {
  37.              p=carica(p,i);
  38.  
  39.          }
  40.     }
  41.     visualizza(testa);
  42.     inser_mezzo(testa);
  43.     visualizza(testa);
  44.  
  45.     return 0;
  46. }
  47. lista* crea_testa()
  48. {
  49.     lista *app;
  50.     app= (lista *) calloc(1,sizeof(lista));
  51.     printf("\ninserisci il 1 elemento della lista: ");
  52.     scanf("%d",&app->dato);
  53.     return app;
  54. }
  55. lista* carica(lista *p, int i)
  56. {
  57.     lista *app;
  58.     app= (lista *) calloc(1, sizeof(lista));
  59.     p->next=app;
  60.     printf("inserisci il %d elemento della lista: ",i+1);
  61.     scanf("%d",&app->dato);
  62.     return app;
  63. }
  64. void visualizza(lista *testa)
  65. {
  66.     if(testa!=NULL)
  67.     {
  68.         printf("%d\t",testa->dato);
  69.         visualizza(testa->next);
  70.     }
  71.  
  72. }
  73. void inser_mezzo(lista *p)
  74. {
  75.     lista *app;
  76.     app=(lista*)calloc(1,sizeof(lista));
  77.     int n,i;
  78.     printf("\nin che posizione vuoi inserire l'elemento?");
  79.     scanf("%d",&n);
  80.     printf("\ninserisci il numero da inserire nella lista:");
  81.     scanf("%d",&app->dato);
  82.     for (i=0;i<n-1;i++)
  83.         p=p->next;
  84.     app->next=p->next;
  85.     p->next=app;
  86.  
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement