Salve,
Ho una lista dichiarata cosi:
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);
}
una funzione che ha scritto la prof in pseudo linguaggio e ho cambiato in C, che serve ad inizializzare la lista:
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;
}
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 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
}
Ho provato a passare i puntatori con un & nella chiamata ( ins(&lista,&s,3) ) e mettere gli * cosi ( succ->prec=testa; ) ma senza alcun successo
Qualcuno mi potrebbe dire dove sbaglio?
Grazie in anticipo