Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- main.c
- #include "funz.h"
- int main(){
- int A[R][C] = {{0,0,0,0}, {5,8,0,0}, {0,0,3,0}, {0,6,0,0}};
- L *testa;
- testa = NULL;
- testa = funzione(A, testa);
- stampa(testa);
- return 0;
- }
- funz.h
- #include <stdlib.h>
- #include <stdio.h>
- #include <malloc.h>
- #define R 4
- #define C 4
- typedef struct elemento {
- int valore;
- int riga;
- int colonna;
- struct elemento *next;
- }L;
- L *funzione(int [][C], L *);
- L *inserimento(L *, int, int, int);
- void stampa(L *);
- funz.c
- #include "funz.h"
- L *funzione(int matrix[][C], L *head){
- for(int i=0; i<R; i++) //lettura matrice
- for(int j=0; j<C; j++){
- if(matrix[i][j] != 0) head = inserimento(head, matrix[i][j], i, j);
- }
- return head;
- }
- L *inserimento(L *h, int elem, int r, int c){
- L *app, *p;
- p = h;
- if(h == NULL){ //se la lista è vuota inserisco il primo elemento
- h = (L *)malloc(sizeof(L));
- if(h != NULL){
- h->valore = elem;
- h->riga = r;
- h->colonna = c;
- h->next = NULL;
- } else printf("\nNon è possibile allocare memoria, valore non inserito!");
- }
- else{
- app = (L *)malloc(sizeof(L)); //se la lista non è vuota, inserisco il nuovo elemento in coda
- if (app != NULL){
- app->valore = elem;
- app->riga = r;
- app->colonna = c;
- app->next = NULL;
- while(p->next != NULL) p = p->next; //scorro finché non trovo l'ultimo elemento della lista
- p->next = app;
- } else printf("\nNon è possibile allocare memoria, valore non inserito!");
- }
- return h;
- }
- void stampa(L *head){
- L *p; //stampo gli elementi della lista
- p = head;
- printf("\n");
- while(p != NULL){
- printf("(%d, %d, %d)-> ", p->valore, p->riga, p->colonna);
- p=p->next;
- }
- printf("NULL\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement