2011-11-15 35 views
2

就像一个免责声明一样,我不是在寻找任何硬编码解决方案,而只是向正确的方向推动。包含多个阵列的二叉树结构

本质上,我需要创建一个树,它包含两个数据在每个节点和两个单独的字符数组中。

struct Node { 
    char *name; 
    char *number; 
    struct Node *left; 
    struct Node *left; 
}; 

这是我此刻的结构,输入的格式为:

name number 
name number 
name number 
. 

.被终止,现在,我对如何解析理论,即getchar直到.scanfnamenumber组合成一个数组。但从这一点来说,我不确定我需要如何将这些数组传递给一个函数来将这些东西添加到树中,在那里我定义了数组的大小等等。有人可以为这个问题提供一些提示吗?

+0

'node-> name = strdup(inputname);'? – AShelly

回答

1

首先,你需要使用动态内存。我猜,你的数组的大小将在运行时被定义,在你读完它们之后。

如果char*你读是空终止(即最后一个字符是“\ 0”),可以使用strlen函数获取它们的大小,和值传递给malloc为了您之前分配内存使用strcpy将字符串复制到该内存中。不要忘了打电话free回到一切你malloc“编

所以只要通过两门char*,其将在你的数据结构插入(它是一个二叉树或尝试的功能吗?你在使用一个术语标题,另一个在你的问题)

0

我会做一个堆型:

typedef struct 
{ 
int pos; 
char *array; 
int size; 
} charArray; 

charArray *newCharArray(); 

void pushCharArray(charArray * ca, char c); 
void popCharArray(charArray *ca); 


charStack *name; 
charStack *number; 

里面pushCharArray你应该检查如果CA为空或不是,增量大小,如果你需要更多的空间,增加的位置.. 。