正如免责声明一样,我不是在寻找任何硬代码解决方案,而只是在正确的方向上轻推。
基本上,我需要创建一个树,每个节点包含两个数据数组和两个独立的字符数组。
struct Node {
char *name;
char *number;
struct Node *left;
struct Node *left;
};
目前这是我的结构,输入格式为:
name number
name number
name number
.
.
是终止,现在,我有一个如何解析它的理论,即getchar
直到.
和scanf
name
和number
成一个数组。但是从这一点来说,我不确定我究竟需要将这些数组传递给一个函数来将这些东西添加到树中,在那里我定义了数组的大小等等。有人能给出一些关于这个问题的技巧吗?
答案 0 :(得分:1)
首先,您需要使用动态内存。数组的大小将在您读完文件后在运行时定义,我猜测。
如果您读取的char*
以空值终止(即最后一个字符为'\ 0'),则可以使用strlen
函数获取其大小,并将该值传递给{{ 1}}以便在使用malloc
将字符串复制到该内存之前分配内存。不要忘记致电strcpy
以退回free
'ed
所以只需将两个malloc
传递给将它们插入数据结构的函数(它是二叉树还是尝试?你在标题中使用了一个术语,在你的问题中使用了另一个术语)
答案 1 :(得分:0)
搜索谷歌“c二叉树教程”:
http://www.cprogramming.com/tutorial/c/lesson18.html
答案 2 :(得分: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是否为null,如果你需要更多空间,增加大小,增加位置...