[C] Inserimento elementi matrice in una lista

Messaggioda Nandone169 » 17/09/2020, 11:41

ciao a tutti, vorrei sapere cosa c'è di sbagliato in questo codice e come posso correggerlo.
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.
Nandone169
Starting Member
Starting Member
 
Messaggio: 14 di 32
Iscritto il: 29/05/2020, 21:12

Re: [C] Inserimento elementi matrice in una lista

Messaggioda Nandone169 » 17/09/2020, 12:16

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 MtL(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)
         {
            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);
         h = h->next;
      }
      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 = MtL(A);
   print(listA);

}
Anche così mi da problemi
Nandone169
Starting Member
Starting Member
 
Messaggio: 15 di 32
Iscritto il: 29/05/2020, 21:12

Re: [C] Inserimento elementi matrice in una lista

Messaggioda Nandone169 » 17/09/2020, 12:27

niente sono riuscito a risolvere.
Nandone169
Starting Member
Starting Member
 
Messaggio: 16 di 32
Iscritto il: 29/05/2020, 21:12


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron