il testo dell'esercizio è:
Si consideri il seguente tipo:
typedef struct lista {
int val;
struct lista *next;
} testa, *testa;
Scrivere una funzione testa insarray(testa p, int k, int v[], int n) che modifica la lista di interi L inserendo, immediatamente prima del k-esimo elemento di L, n nuovi elementi con valori dati dall'array A e ritorna la lista modificata. La numerazione degli elementi della lista inizia da zero, se la lista non ha il k-esimo elemento, i nuovi elementi sono aggiunti in coda. Ad esempio, se L è 10 -> 11-> 12 -> 13 e A = {1, 2} (quindi n = 2), ecco come è modificata la lista per diversi valori di k:
k = 0 1 -> 2 -> 10 -> 11-> 12 -> 13
k = 2 10 -> 11-> 1 -> 2 -> 12 -> 13
k = 6 10 -> 11-> 12 -> 13 -> 1 -> 2
io l'ho eseguito in questo modo:
purtroppo non ho con me il mio computer quindi non ho potuto compilare e verificare se il mio codice è giusto, quindi in caso avessi sbagliato qualcosa e/o il codice non fosse corretto, sapreste dirmi dove ho sbagliato?codice:testa insarray(testa p, int k, int v[], int n){ int i=0,m=0; if(k==0){ testa nuovalista; for(int j=0;j<n;j++){ testa nuovo=(lista*) malloc(sizeof(lista)); nuovo->val=v[i]; nuovo->next=p; nuovalista=nuovo; } return nuovalista; } else{ testa t=p; while(t!=NULL){ t=t->next; m++; } if(k<m){ while(i<k){ p=p->next; i++; } testa temp=p->next; testa tail; for(int j=0;j<n;j++){ testa nuovo=(lista*) malloc(sizeof(lista)); nuovo->val=v[i]; nuovo->next=NULL; tail=p; while(tail->next!=NULL) tail=tail->next; tail->next=nuovo; } p->next=temp; } else if(k>m){ for(int j=0;j<n;j++){ testa nuovo=(lista*) malloc(sizeof(lista)); nuovo->val=v[i]; nuovo->next=NULL; testa e=p; while (e->next != NULL) e = e->next; e->next=nuovo; } } } return p; }



