如何使用C将avl的每个元素放入数组中

时间:2015-03-25 01:00:03

标签: c

我正在尝试使用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;

我尝试这样做,但它不起作用。有关如何做到的任何建议吗?

1 个答案:

答案 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调用如何计算输出数组所需的大小。