c如何在修改后的树中保留数据

时间:2015-05-20 11:22:50

标签: c pointers struct tree

所以我有一个在main和function命令中声明的树来修改它。 现在我的问题是我扫描一些数据和条件1运行,它存储数据很好。但是,当我运行条件2时,树被NULL覆盖并且之前存储的数据被擦除。如何保存数据?

typedef struct tree_s tree_t;
typedef struct {
     int i;   
     char a*
}data_t;

struct tree_s {
    data_t data;
    tree_t *left;
    tree_t *right;
};
int
main(int argc, char *argv[]) {
    tree_t *tree = NULL;
    command(input_data, tree);
    return 0;
}

command(blablah){
    if(condition1){
        /*inserts data into tree*/
    if(condition2){
        /*uses data that has been inserted to print something*/
    }
}

编辑:

void
command(struct_t *c, tree_t **tree) {

switch (*(c->input)) {     /*c->input is a character array*/
    case condition_one:
        process_stock(c, tree);
        break;

    case condition_2:
        process_print_stock(c, tree);
        break;

    default:
        printf("Unrecognised top-level command!.\n");
    }
}

1 个答案:

答案 0 :(得分:0)

 main(int argc, char *argv[]) 
  {
   tree_t *tree = NULL;
   command(input_data, tree);
   return 0;
  }

从我在主要功能中看到的

      tree_t *tree = NULL

你已经用“NULL”和函数

初始化了“tree”
  command(input_data, tree);

将其值“NULL”传递给“命令”函数。

将其替换为:

       command(input_data, &tree);

并在命令函数中定义“tree”的值