Grazie mille come sempre chiarissimo e gentilissimo ...ne è uscito fuori tutto ciò solo che al secondo punto del secondo poligono crasha....
struct punto
{
int x;
int y;
};
struct poligono
{
int N;
punto *coordinate;
poligono *next;
};
poligono *il=NULL; //punta all inizio della lista.
void LeggiPunto(punto *&a);
void LeggiPoligoni(poligono * pol,int N);
void InsInTesta(poligono *&il,poligono *nuovo);
void InsInCoda (poligono *&il,poligono *nuovo);
void DistruggiLista(poligono *&il);
int main()
{
int N;
poligono *nuovo=NULL; //puntatore alla struct poligono
char scelta;
do
{
nuovo=new poligono;
if(nuovo!=NULL) // se e stato allocato continua.
{
cout<<"numero di vertici del poligono? "<<endl;
cin>>N;
cout<<"Leggi coordinate"<<endl;
LeggiPoligoni(nuovo,N);
nuovo->next=NULL;
InsInCoda(il,nuovo);
cout<<"inserire un nuovo poligono?(s/n)"<<endl;
cin>>scelta;
}
}
while(scelta=='s');
DistruggiLista(il);
}
void InsInTesta(poligono *&il,poligono *nuovo)
{
nuovo->next=il;
il=nuovo;
}
void InsInCoda (poligono *&il,poligono *nuovo)
{
poligono *ultimo=NULL;
if(il==NULL)
{
InsInTesta(il,nuovo);
}
else
{
ultimo=il;
while(ultimo->next!=NULL)
{
ultimo=ultimo->next;
}
ultimo->next=nuovo;//lo aggancio all ultimo nodo
}
}
void DistruggiLista(poligono *&il)
{
poligono *tmp=il;
while(il!=NULL)
{
tmp=il->next;
delete il;
il=tmp;
}
}
void LeggiPunto(punto *&a)
{
cout<<"x= ";
cin>>a->x;
cout<<"y =";
cin>>a->y;
cout<<endl;
}
void LeggiPoligoni(poligono * pol,int N)
{
for(int i=0;i<N;i++)
{
punto *a=new punto;
LeggiPunto(a);
pol->coordinate[i].x=a->x;
pol->coordinate[i].y=a->y;
}
}
e credo che l'errore sia in queste righe:
pol->coordinate
.x=a->x;
pol->coordinate.y=a->y;