我正在尝试使用C将AVL的每个元素(字符串)传递给数组。我尝试这样做:
void inorderCli(clientes t,int index, char a[]){
if (t != NULL){
inorderCli(t->esq,index,a);
strcpy(a[index],t->cli);
index=index+5;
inorderCli(t->dir,inde,a);
}
}
typedef struct ctree{
char cli[5];
struct ctree *esq, *dir;
int alt;
}* clientes;
我尝试这样做,但它不起作用。有关如何做到的任何建议吗?
答案 0 :(得分:1)
你不能这样做。 index
也必须在父级中更新。
请尝试使用此方法:
int inorderCli(clientes t, int index, char a[]) {
if (t != NULL) {
index = inorderCli(t->esq, index, a);
if (a) strcpy(a + index, t->cli);
index = inorderCli(t->dir, index + 5, a);
}
return index;
}
并从main
调用此函数,如下所示:
int size = inorderCli(client_root, 0, NULL);
char *a = malloc(size);
inorderCli(client_root, 0, a);
注意用NULL
调用如何计算输出数组所需的大小。