stgww
11-02-2010, 11:23
Ciao sto cercando di eliminare un elemento di una lista, ma mi da un run time error e non capisco dove sia l'errore, visual studio express mi punta a p=p->next ma non capisco dove sia l'errore, cmq ora vi passo il sottoprogramma magari gli date un'occhiata
struct cella *elimina(struct cella *punt)//Punt è il puntatore alla testa della lista
{
struct cella *p,*temp;//p è il puntatore che scorre la lista
char name[MAX];
p=punt;
printf("Nome da eliminare\n");
scanf("%s",name);
if(p->nome==name)//Controllo che l'elemento da eliminare non sia la testa
{
temp=p;
p=p->next;
punt=p;
free(temp);
}
else
{
while(((p->next)->nome)!=name) //se non è la testa controllo in quelli successivi
{
p=p->next;
}
temp=p->next; //temp ora punta all'elemento da eliminare
if(temp->next!=NULL)//se è un elemnto in mezzo alla lista
{
p->next=temp->next;
free(temp);
}
else//se invece è la coda
{
p->next=NULL;
free(temp);
}
return(punt);//ritorno la testa
}
Grazie
struct cella *elimina(struct cella *punt)//Punt è il puntatore alla testa della lista
{
struct cella *p,*temp;//p è il puntatore che scorre la lista
char name[MAX];
p=punt;
printf("Nome da eliminare\n");
scanf("%s",name);
if(p->nome==name)//Controllo che l'elemento da eliminare non sia la testa
{
temp=p;
p=p->next;
punt=p;
free(temp);
}
else
{
while(((p->next)->nome)!=name) //se non è la testa controllo in quelli successivi
{
p=p->next;
}
temp=p->next; //temp ora punta all'elemento da eliminare
if(temp->next!=NULL)//se è un elemnto in mezzo alla lista
{
p->next=temp->next;
free(temp);
}
else//se invece è la coda
{
p->next=NULL;
free(temp);
}
return(punt);//ritorno la testa
}
Grazie