PDA

Visualizza la versione completa : [C] esercizio sulle liste


manuel_samele
18-01-2012, 14:40
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:


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;
}

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?

oregon
18-01-2012, 14:43
Ma scusa ... ti hanno chiuso il thread precedente per dei motivi che tu replichi pari pari in quest'altra discussione ... lo hai visto?

valia
18-01-2012, 14:43
a volte ritornano...scusa hai il pc per scrivere e non puoi metterci su un gcc?

oregon
18-01-2012, 14:47
Originariamente inviato da valia
a volte ritornano...scusa hai il pc per scrivere e non puoi metterci su un gcc?

Ma anche scrivesse da un palmare, il concetto che non gli completamente passato per la mente che il moderatore gli abbia fatto delle osservazioni ...

O un robot o non sa leggere ... o anche peggio.

manuel_samele
18-01-2012, 15:04
Originariamente inviato da oregon
Ma anche scrivesse da un palmare, il concetto che non gli completamente passato per la mente che il moderatore gli abbia fatto delle osservazioni ...

O un robot o non sa leggere ... o anche peggio.
vab dai non piangere tranquillo

oregon
18-01-2012, 15:05
Originariamente inviato da manuel_samele
vab dai non piangere tranquillo

Perch dovrei ... ? :confused:

manuel_samele
18-01-2012, 15:06
lasciamo stare va

oregon
18-01-2012, 15:07
Originariamente inviato da manuel_samele
lasciamo stare va

Ecco ... lascia stare ...

manuel_samele
18-01-2012, 15:09
si non c' bisogno che me lo dici tu tranquillo johnny

oregon
18-01-2012, 16:27
Originariamente inviato da manuel_samele
johnny

:confused:

Loading