Salve,
Ho una lista dichiarata cosi:
una funzione che ha scritto la prof in pseudo linguaggio e ho cambiato in C, che serve ad inizializzare la lista:codice:typedef struct elemento { int key; struct elemento *puntatore; struct elemento *prec; } elemento; int main(){ elemento *lista=NULL; // puntatore della lista testa elemento *s=NULL; //puntatore all'ultimo elemento init(lista,s); //funzione che la inizializza.. la scritta la prof ma non è il massimo ins(lista,s,3); //funzione che non funziona! return(0); }
e una funzione che dovrebbe aggiungere un elemento alla lista che invece non funziona perchè non riesco a modificare i puntatori all'elemento precedente e quello all'elemento successivo:codice:void init(elemento *p,elemento *s){//crea una lista vuota p=primo,s=ultimo p=(elemento *)malloc(sizeof(elemento)); s=(elemento *)malloc(sizeof(elemento)); p->puntatore=s; p->prec=NULL; s->puntatore=NULL; s->prec=p; }
Ho provato a passare i puntatori con un & nella chiamata ( ins(&lista,&s,3) ) e mettere gli * cosi ( succ->prec=testa; ) ma senza alcun successocodice:void ins(elemento *testa,elemento *succ,int valore){ elemento *nuovo=(elemento*)malloc(sizeof(elemento));//crea un nuovo elemento nuovo->key=valore;//gli da un valore nuovo->puntatore=succ;//lo mette prima del successivo nuovo->prec=testa; //prima gli mette la testa //succ->prec=testa;//errore, non funziona //testa->puntatore=nuovo;//errore, non funziona }
Qualcuno mi potrebbe dire dove sbaglio?
Grazie in anticipo![]()

Rispondi quotando