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

关于链表有关问题~老出错

2012-02-26 
关于链表问题~~~老出错#includestdio.h#includemalloc.hstructCar{intIdCar*NextCar}Car*pCarCar*

关于链表问题~~~老出错
#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;
}

热点排行