Salve,
Volevo sapere se questo codice puo' essere corretto o se puo' generare errore visto che compilando il codice con il compilatore lcc al ritorno mi genera un errore e la terminazione abnomala del programma. Lo scopo è inserire in coda in una lista, usando l'allocazione dinamica con malloc:
queste sono le strutture:
//struttura T2, lista doppia, indica il punto avente coordinate x,y
//se è il primo punto di una linea è puntato da t3 tramite //puntatore definito p_punto T2
typedef struct p_punto *p_punto;
typedef struct p_punto{
int x;
int y;
p_punto next;
p_punto prev;
}punto;
//struttura T3, lista doppia,punta al punto di inizio di ogni tratta
typedef struct T3_i *L_i;
typedef struct T3_i{
int peso; //peso di ogni tratto che compone la linea/tratta
int x;
int y; //coordinate iniziali (del primo punto della tratta)
L_i next; //puntatore al sucessivo
char *percorso; //stringa contenente gli spostamenti es:2N2W...
p_punto T2;//puntatore alla struttura T2
Ecco la funzione :
L_i metti_inlista(int a, int b, int t);
while(...){
ttre=malloc(sizeof(L_i));
ttre->x=a;
ttre->y=b;
ttre->peso=t;
ttre->T2=NULL;
ttre->percorso=(dim%2==0)?c_tmp2:c_tmp1;
printf("il percorso e'' %s\n",ttre->percorso);
//INSERISCO IN LISTA T3
if(testaL_i==NULL){ //lista vuota
printf("inserisco in testa\n");
ttre->next=NULL;
testaL_i=ttre;
}
else {//la lista non è vuota inserisco in coda
while(tmp1->next!=NULL)tmp1=tmp1->next;//scorro la lista
printf("tmp1:%s\n",tmp1->percorso);
ttre->next=NULL;
tmp1->next=ttre;
printf("tmp1->next:%s\n",tmp1->next->percorso);
if (ttre->next==NULL)printf("il succ al nuovo elemnto punta poi a null");
}
return ttre;//ritorna il puntatore al valore appena istanziato
}
Sarei grato se qualcuno mi risponde al più presto perkè è una parte di un progetto che devo consegnare tra breve..
Non riesco proprio a capire perkè nn va.. :master:
Grazie!!!