我有沿着線功能:Ç遞歸函數穿過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