Advertisement
Guest User

esercizio 23

a guest
Dec 15th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. main.c
  2.  
  3. #include "funz.h"
  4.  
  5. int main(){
  6.     int A[R][C] = {{0,0,0,0}, {5,8,0,0}, {0,0,3,0}, {0,6,0,0}};
  7.     L *testa;
  8.     testa = NULL;
  9.     testa = funzione(A, testa);
  10.     stampa(testa);
  11.     return 0;
  12. }
  13.  
  14. funz.h
  15.  
  16. #include <stdlib.h>
  17. #include <stdio.h>
  18. #include <malloc.h>
  19. #define R 4
  20. #define C 4
  21.  
  22. typedef struct elemento {
  23.     int valore;
  24.     int riga;
  25.     int colonna;
  26.     struct elemento *next;
  27. }L;
  28.  
  29. L *funzione(int [][C], L *);
  30. L *inserimento(L *, int, int, int);
  31. void stampa(L *);
  32.  
  33. funz.c
  34.  
  35. #include "funz.h"
  36.  
  37. L *funzione(int matrix[][C], L *head){
  38.     for(int i=0; i<R; i++)         //lettura matrice
  39.         for(int j=0; j<C; j++){
  40.             if(matrix[i][j] != 0) head = inserimento(head, matrix[i][j], i, j);
  41.         }
  42.     return head;
  43. }
  44.  
  45. L *inserimento(L *h, int elem, int r, int c){
  46.     L *app, *p;
  47.     p = h;
  48.     if(h == NULL){                  //se la lista è vuota inserisco il primo elemento
  49.         h = (L *)malloc(sizeof(L));
  50.         if(h != NULL){
  51.             h->valore = elem;
  52.             h->riga = r;
  53.             h->colonna = c;
  54.             h->next = NULL;
  55.         } else printf("\nNon è possibile allocare memoria, valore non inserito!");
  56.     }
  57.     else{
  58.         app = (L *)malloc(sizeof(L));  //se la lista non è vuota, inserisco il nuovo elemento in coda
  59.         if (app != NULL){
  60.             app->valore = elem;
  61.             app->riga = r;
  62.             app->colonna = c;
  63.             app->next = NULL;
  64.             while(p->next != NULL) p = p->next;  //scorro finché non trovo l'ultimo elemento della lista
  65.             p->next = app;
  66.         } else printf("\nNon è possibile allocare memoria, valore non inserito!");
  67.     }
  68.     return h;
  69. }
  70.  
  71. void stampa(L *head){
  72.     L *p;                       //stampo gli elementi della lista
  73.     p = head;
  74.     printf("\n");
  75.     while(p != NULL){
  76.         printf("(%d, %d, %d)-> ", p->valore, p->riga, p->colonna);
  77.         p=p->next;
  78.     }
  79.     printf("NULL\n");
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement