简单而奇怪的链表结构
请教大家,下面这个链表输入程序,为什么只能在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);
}
[解决办法]
内存申请都不释放