Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct s_node
- {
- int numero;
- int riga;
- int colonna;
- struct s_node* next;
- } t_node;
- typedef t_node* p_node;
- typedef struct s_lista
- {
- p_node testa;
- int n;
- } t_lista;
- t_lista creaLista();
- t_lista inserisciElemento(t_lista lista,int **matrice,int indiceRiga,int indiceColonna);
- void stampaLista(t_lista lista);
- int main()
- {
- int rig,col,i,j;
- t_lista l;
- printf("Inserisci il numero di righe della matrice A: ");
- scanf("%d",&rig);
- printf("Inserisci il numero di colonne della matrice A: ");
- scanf("%d",&col);
- int **A;
- A=(int **)malloc(rig*sizeof(int *));
- for(i=0;i<rig;i++)
- A[i]=(int *)malloc(col*sizeof(int));
- printf("/-----------------------------------------/\n");
- printf("Inseriamo ora i valori della matrice!\n\n");
- for(i=0;i<rig;i++)
- {
- for(j=0;j<col;j++)
- {
- printf("Inserimento valore (%d,%d): ",i,j);
- scanf("%d",&A[i][j]);
- }
- printf("\n");
- }
- l=creaLista();
- printf("/------------------------------------------/\n");
- printf("Ora inseriamo i valori diversi da 0 nella lista!\n\n");
- l=inserisciElemento(l,A,rig,col);
- printf("/------------------------------------------/\n");
- printf("Ora stampiamo la lista!\n");
- printf("La tua lista è: ");
- stampaLista(l);
- }
- t_lista creaLista()
- {
- t_lista lista;
- lista.n=0;
- lista.testa=NULL;
- return lista;
- }
- t_lista inserisciElemento(t_lista lista,int **matrice,int indiceRiga,int indiceColonna)
- {
- int i,j;
- int conta=0;
- for(i=indiceRiga-1;i>=0;i--)
- {
- for(j=indiceColonna-1;j>=0;j--)
- {
- if(matrice[i][j]!=0)
- {
- p_node nuovonodo;
- nuovonodo=malloc(sizeof(p_node));
- if(nuovonodo==NULL)
- {
- printf("Memoria esaurita! Allocazione fallita!");
- exit(EXIT_FAILURE);
- }
- nuovonodo->numero=matrice[i][j];
- nuovonodo->riga=i;
- nuovonodo->colonna=j;
- nuovonodo->next=lista.testa;
- lista.testa=nuovonodo;
- lista.n++;
- conta++;
- }
- }
- }
- printf("Hai inserito %d elementi!\n",conta);
- return lista;
- }
- void stampaLista(t_lista lista)
- {
- p_node p1;
- p1=lista.testa;
- while(p1!=NULL)
- {
- printf("(%d,%d,%d) ",p1->numero,p1->riga,p1->colonna);
- p1=p1->next;
- if(p1!=NULL)
- printf("-> ");
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement