首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

在学数据结构~很简单的有关问题

2012-02-14 
在学数据结构~~~很简单的问题#includestdio.h#includemalloc.hstructCar{intIdCar*NextCar}Car*pCa

在学数据结构~~~很简单的问题
#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;
}

热点排行