我有沿着线功能:Ç递归函数穿过char数组
void insert(btnode **ptr, char *name, unsigned int race, unsigned int class, unsigned int id, char *guild)
{
if((*ptr) == NULL)
{
(*ptr) = (btnode*)malloc(sizeof(btnode));
(*ptr)->rec = (record*)malloc(sizeof(record));
(*ptr)->left=NULL;
(*ptr)->right=NULL;
strcpy((*ptr)->rec->name,name);
(*ptr)->rec->race = race;
(*ptr)->rec->class = class;
(*ptr)->rec->id = id;
strcpy((*ptr)->rec->guild, guild);
}
else
{
if((*ptr)->rec->id > id)
{
insert(&((*ptr)->left),name,race,class,id,guild);
}
else
{
insert(&((*ptr)->right),name,race,class,id,guild);
}
}
}
它是利用将值插入一个二叉树
时遇到的问题是,当所述第一节点是空的一切工作正常。但是当函数必须调用它自己时,char数组不会打印它的意思。
有什么建议如何解决这个问题?
编辑:完整的代码添加,没有问题,只有字符unsigned int整数。
结构减速:
#define TWOBYTEINT 16
#define FOURBYTEINT 32
#define MAXIMUMLINE 70
#define FALSE 0
#define TRUE 1
typedef struct record
{
char name[13];
unsigned int race : TWOBYTEINT;
unsigned int class : TWOBYTEINT;
unsigned int id : FOURBYTEINT;
char guild[30];
}__attribute__((packed)) record;
typedef struct node
{
record * rec;
struct node *right, *left;
}btnode;
这段代码没有意义,'if(null)'总是'false',永远不会执行正文。我想你的意思是沿着'if(!node)'...的方向?另外,你应该显示更多的代码,什么是“插入”? – hochl 2012-03-28 09:21:42
这部分代码很好,你必须提供更多代码来查看是否有其他错误。 – Mario 2012-03-28 09:22:36
请指定你如何创建你的节点,并解决问题@ hochl提到 – giorashc 2012-03-28 09:23:26