读书人

给大家出道题玩玩!解决办法

发布时间: 2012-02-07 17:45:36 作者: rapoo

给大家出道题玩玩!
下列程序运行时会崩溃,请找出错误并改正,并且说明原因。

#include <stdio.h>
#include <malloc.h>
typedef struct TNode
{
TNode* left;
TNode* right;
int value;
}TNode;

TNode* root=NULL;
void append(int N);

int main()
{
append(63);
append(45);
append(32);
append(77);
append(96);
append(21);
append(17); // Again, 数字任意给出
return 0;
}

void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode-> value=N;
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;
while((N> =temp-> value && temp-> left!=NULL)||(N <temp-> value && temp-> right!=NULL))
{
while(N> =temp-> value && temp-> left!=NULL)
temp=temp-> left;
while(N <temp-> value && temp-> right!=NULL)
temp=temp-> right;
}
if(N> =temp-> value)
temp-> left=NewNode;
else
temp-> right=NewNode;
return;
}
}


[解决办法]
是不是因为malloc的内存空间没有释放?
在对树的操作中加入free操作,并在main结束前调用。

读书人网 >网络基础

热点推荐