Dovrei inserire all'interno di una lista concatenata gli elementi non nulli della matrice A:
- Codice:
#include <stdio.h>
#include <stdlib.h>
#define N 4
typedef struct list_
{
unsigned int i;
unsigned int j;
float data;
struct list_* next;
}list;
typedef list* link;
void insert(link* listA, float value, unsigned int i, unsigned int j)
{
link nuovo = malloc(sizeof(list));
if(nuovo)
{
nuovo->next = NULL;
nuovo->data = value;
nuovo->i = i;
nuovo->j = j;
link temp = *listA;
while(temp)
{
temp = temp->next;
}
temp->next = nuovo;
}
}
link matrixToList(float A[][N])
{
unsigned int i, j;
link listA = NULL;
for(i = 0; i < N; ++i)
{
for(j = 0; j < N; ++j)
{
if(A[i][j] != 0.0)
{
insert(&listA, A[i][j], i, j);
}
}
}
return listA;
}
void print(link listA)
{
if(listA)
{
link h = listA;
while(h)
{
printf("(%u,%u,%.1f)", h->i, h->j, h->data);
}
printf("NULL\n");
}
}
int main()
{
float A[][N]= {0, 1.1, 0, 0,
1.2, 0, 0, 0.1,
0, 1.3, 0, 0,
0, 0, 1.0, 0};
float x[N] = {1.0, 2.0, 1.0, 0.0};
link listA = matrixToList(A);
print(listA);
grazie in anticipo.