在学数据结构~~~很简单的问题
#include <stdio.h>
#include <malloc.h>
struct Car
{
int Id;
Car *NextCar;
};
Car *pCar=NULL;
Car *Create()
{
while(1)
{
Car *pfC=(Car*)malloc(sizeof(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(Car *pCar)
{
while(pCar-> NextCar!=NULL)
{
pCar=pCar-> NextCar;
printf( "汽车编号:\t%d\n ",pCar-> Id);
}
}
int main()
{
ShowList(Create());
return 0;
}
程序运行有错误~~~帮忙找一下,谢谢了
[解决办法]
全部改了就应该如下:
#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);
}
}
int main()
{
ShowList(Create());
return 0;
}
[解决办法]
对,逻辑上有不少问题。
这是我修改的
#include <stdio.h>
#include <malloc.h>
struct Car
{
int Id;
Car *NextCar;
};
Car *pCar=NULL;
Car *Create()
{
while(1)
{
Car *pfC=(Car*)malloc(sizeof(Car));
printf( "请输入汽车编号:\t ");
scanf( "%d ",&(pfC-> Id));
pfC-> NextCar=NULL;
if (!pCar)
pCar=pfC;
else{
pfC-> NextCar=pCar-> NextCar;
pCar-> NextCar=pfC;
if(pfC-> Id==0)
{
break;
}}
printf( "\n ");
}
return pCar;
};
void ShowList(Car *pCar)
{
while(pCar)
{
printf( "汽车编号:\t%d\n ",pCar-> Id);
pCar=pCar-> NextCar;
}
}
void freelist(Car* head){
while(head){
Car* temp=head;
head=head-> NextCar;
free(temp);
}
}
int main()
{
ShowList(Create());
freelist(pCar);
return 0;
}