关于链表问题~~~老出错
#include <stdio.h>
#include <malloc.h>
struct Car
{
int Id;
Car *NextCar;
};
Car *pCar;
Car *Create()
{
while(1)
{
Car *pfC=(Car*)malloc(sizeof(Car));
printf( "请输入汽车编号:\t ");
scanf( "%d ",&(pfC-> Id));
if(pfC-> Id==0)
{
break;
}
else
{
pfC-> NextCar=NULL;
pCar-> NextCar=pfC;//一运行到这里就出错,
}
printf( "\n ");
}
return pCar;
};
int main()
{
Create();
return 0;
}
帮忙改正一下,谢谢
[解决办法]
佩服啊,第一个呢??第一个输入的时候
Car *pCar可是野地址也!!
还不初始化!想干吗??
#include <stdio.h>
#include <malloc.h>
struct Car
{
int Id;
Car *NextCar;
};
Car *pCar = NULL;
Car *Create()
{
Car *pPnt;
while(1)
{
Car *pfC=(Car*)malloc(sizeof(Car));
printf( "请输入汽车编号:\t ");
scanf( "%d ",&(pfC-> Id));
if (pCar == NULL)
{
pCar = pfC;
pPnt = pfC;
continue;
}
if(pfC-> Id==0)
{
break;
}
else
{
pfC-> NextCar=NULL;
pPnt-> NextCar=pfC;
pPnt = pfC;
}
printf( "\n ");
}
return pCar;
};
int main()
{
Create();
// free here!!!!!!!!
return 0;
}
还有前面思路的不对和不FREE使用的内存就不说你了,
[解决办法]
#include <stdio.h>
#include <malloc.h>
struct Car
{
int Id;
Car *NextCar;
};
Car *pCar=NULL,*pfC=NULL;
Car *Create()
{
while(1)
{
pfC=(Car*)malloc(sizeof(Car));
printf( "请输入汽车编号:\t ");
scanf( "%d ",&(pfC-> Id));
pfC-> NextCar=pCar;
if(pfC-> Id==0)
{
free(pfC);
break;
}
pCar=pfC;
printf( "\n ");
}
return pCar;
};
void ShowList(Car *pCar)
{
if(NULL==pCar)
{
return;
}
printf( "汽车编号:\t%d\n ",pCar-> Id);
while(pCar-> NextCar!=NULL)
{
pfC=pCar;
pCar=pCar-> NextCar;
printf( "汽车编号:\t%d\n ",pCar-> Id);
free(pfC);
}
}
int main()
{
ShowList(Create());
return 0;
}