Advertisement
Guest User

C6_ES1_DYNAMIC

a guest
Dec 14th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct s_node
  5. {
  6. int numero;
  7. int riga;
  8. int colonna;
  9. struct s_node* next;
  10. } t_node;
  11.  
  12. typedef t_node* p_node;
  13.  
  14. typedef struct s_lista
  15. {
  16. p_node testa;
  17. int n;
  18. } t_lista;
  19.  
  20. t_lista creaLista();
  21.  
  22. t_lista inserisciElemento(t_lista lista,int **matrice,int indiceRiga,int indiceColonna);
  23.  
  24. void stampaLista(t_lista lista);
  25.  
  26. int main()
  27. {
  28. int rig,col,i,j;
  29. t_lista l;
  30.  
  31. printf("Inserisci il numero di righe della matrice A: ");
  32. scanf("%d",&rig);
  33. printf("Inserisci il numero di colonne della matrice A: ");
  34. scanf("%d",&col);
  35.  
  36. int **A;
  37. A=(int **)malloc(rig*sizeof(int *));
  38. for(i=0;i<rig;i++)
  39. A[i]=(int *)malloc(col*sizeof(int));
  40.  
  41. printf("/-----------------------------------------/\n");
  42. printf("Inseriamo ora i valori della matrice!\n\n");
  43.  
  44. for(i=0;i<rig;i++)
  45. {
  46. for(j=0;j<col;j++)
  47. {
  48. printf("Inserimento valore (%d,%d): ",i,j);
  49. scanf("%d",&A[i][j]);
  50. }
  51. printf("\n");
  52. }
  53.  
  54. l=creaLista();
  55.  
  56. printf("/------------------------------------------/\n");
  57. printf("Ora inseriamo i valori diversi da 0 nella lista!\n\n");
  58.  
  59. l=inserisciElemento(l,A,rig,col);
  60.  
  61. printf("/------------------------------------------/\n");
  62. printf("Ora stampiamo la lista!\n");
  63. printf("La tua lista è: ");
  64. stampaLista(l);
  65. }
  66.  
  67. t_lista creaLista()
  68. {
  69. t_lista lista;
  70. lista.n=0;
  71. lista.testa=NULL;
  72. return lista;
  73. }
  74.  
  75. t_lista inserisciElemento(t_lista lista,int **matrice,int indiceRiga,int indiceColonna)
  76. {
  77. int i,j;
  78. int conta=0;
  79.  
  80. for(i=indiceRiga-1;i>=0;i--)
  81. {
  82. for(j=indiceColonna-1;j>=0;j--)
  83. {
  84. if(matrice[i][j]!=0)
  85. {
  86. p_node nuovonodo;
  87. nuovonodo=malloc(sizeof(p_node));
  88. if(nuovonodo==NULL)
  89. {
  90. printf("Memoria esaurita! Allocazione fallita!");
  91. exit(EXIT_FAILURE);
  92. }
  93.  
  94. nuovonodo->numero=matrice[i][j];
  95. nuovonodo->riga=i;
  96. nuovonodo->colonna=j;
  97. nuovonodo->next=lista.testa;
  98. lista.testa=nuovonodo;
  99. lista.n++;
  100. conta++;
  101. }
  102. }
  103. }
  104.  
  105. printf("Hai inserito %d elementi!\n",conta);
  106.  
  107. return lista;
  108. }
  109.  
  110. void stampaLista(t_lista lista)
  111. {
  112. p_node p1;
  113. p1=lista.testa;
  114.  
  115. while(p1!=NULL)
  116. {
  117. printf("(%d,%d,%d) ",p1->numero,p1->riga,p1->colonna);
  118. p1=p1->next;
  119. if(p1!=NULL)
  120. printf("-> ");
  121. }
  122.  
  123. return;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement