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

简单而奇怪的链表结构,该怎么解决

2012-03-09 
简单而奇怪的链表结构请教大家,下面这个链表输入程序,为什么只能在TurboC中运行成功,而在VC中不行呢?问题

简单而奇怪的链表结构
请教大家,下面这个链表输入程序,为什么只能在Turbo   C中运行成功,而在VC中不行呢?问题出在什么地方,请大家指点,多页。

#include   "stdio.h "
main()
{
struct   ready
{
char   name;
int   priority;
int   exetime;
int   frequency;
struct   ready   *next;
};
struct   ready   *task;

int   i;
printf( "N   P   E   F\n ");
for(i=0;   i <4;   i++)
{
fflush(stdin);
scanf( "%c   %d   %d   %d ",   task-> name,   task-> priority,   task-> exetime,   task-> frequency);
task-> next   =   NULL;
task   =   task-> next;
}
}

[解决办法]
struct ready *task;
每个结点都必须分配内存
[解决办法]
TC和VC环境都不一样,同样的代码有问题很正常。因为TC是纯C环境,而VC是C++环境,所以肯定有区别的,以下是我在VC中调试好的代码,你可以参考一下:

#include "stdafx.h "
#include "stdio.h "
using namespace std;

int main()
{
struct ready
{
char name;
int priority;
int exetime;
int frequency;
struct ready *next;
};

struct ready *pre = NULL;
int i;
printf( "N P E F\n ");
for(i=0; i <4; i++)
{
//fflush(stdin);
struct ready *task = new ready;
scanf( "%c %d %d %d ", &task-> name, &task-> priority, &task-> exetime, &task-> frequency);
task-> next = NULL;
if (pre) pre-> next = task;
pre = task;
}
}
[解决办法]
#include "stdio.h "
int main()
{
struct ready
{
char name;
int priority;
int exetime;
int frequency;
struct ready *next;
};
struct ready *task = new struct ready;
struct ready *p = task;

int i;

memset(task, 0, sizeof(struct ready));
printf( "N P E F\n ");

for(i=0; i <4; i++)
{
fflush(stdin);
scanf( "%c %d %d %d ", &p-> name, &p-> priority, &p-> exetime, &p-> frequency);
if (i < 3)
{
p-> next = new struct ready;
memset(p-> next, 0, sizeof(struct ready));
p = p-> next;
}
else
{
p-> next = NULL;
p = p-> next;
}
}

return(0);
}
[解决办法]
内存申请都不释放

热点排行