郁闷啊~~~又出问题了,帮帮忙
#include <stdio.h>
#include <malloc.h>
struct Car
{
int Id;
struct Car *NextCar;
};
struct Car *pCar=NULL;
struct Car *Create()
{
while(1)
{
struct Car *pfC=(struct Car*)malloc(sizeof(struct Car));
printf( "请输入汽车编号:\t ");
scanf( "%d ",&(pfC-> Id));
if(pfC-> Id==0)
{
break;
}
else
{
pfC-> NextCar=pCar-> NextCar;
pCar-> NextCar=pfC;
}
printf( "\n ");
/*free(pfC); */
}
return pCar;
};
void ShowList(struct Car *pCar)
{
while(pCar-> NextCar!=NULL)
{
pCar=pCar-> NextCar;
printf( "汽车编号:\t%d\n ",pCar-> Id);
}
}
void freelist(struct Car* head)
{
while(head)
{
struct Car* temp=head;
head=head-> NextCar;
free(temp);
}
}
int main()
{
ShowList(Create());
freelist(pCar);
//getch();
return 0;
}
程序在TC2.0里面运行一切正常,可是在VC++2005里面运行却出错~~~那位大虾帮我看看啊,我很感激啊,已经搞了2天了555……
[解决办法]
哦,没检查头指针为空的情况,这样:
void ShowList(struct Car *pCar)
{
if (pCar!=NULL) printf( "汽车编号:\t%d\n ",pCar-> Id); //////头节点检查。
else retuen;
while(pCar-> NextCar!=NULL)
{
pCar=pCar-> NextCar;
printf( "汽车编号:\t%d\n ",pCar-> Id);
}
}