0

皆さん、私は 2 つの構造体を持っています。1 つはキーペアで、もう 1 つはノードです。

typedef struct {
    char *key;
    void *value;
} VL;

typedef struct node{
    struct node *left;
    struct node *right;
    VL data;
} BST;

ノード構造体を初期化し、内部に VL 構造体を追加するにはどうすればよいですか? これは私がこれまでに持っているものです:

    // Create new node
    struct node *temp = malloc(sizeof(node));
    temp->left = NULL;
    temp->right = NULL;

    struct VL *vl = malloc(sizeof(VL));
    vl->key = key;
    vl->value = &value;

    temp->data= *vl;

また、temp->data.key を key に設定するなど、他にも多くのことを試しましたが、すべてエラーが返されます。だから私は助けを求めてここに来ました:)。

また、ノードからデータを取得するにはどうすればよいですか?

char *key = (char *)5;
void *val = "hello";
// create node with this key/val pair and insert into the tree, then print
printf("key = %d; value = %s\n", (int)head->data.key, (char*)head->data.value);

それで十分でしょうか?

ありがとう!

4

1 に答える 1

3

The memory for VL data is allocated as part of the node struct and does not need to be reallocated.

Try:

struct node *temp = malloc(sizeof(node));
temp->left = NULL;
temp->right = NULL;
(temp->data).key = key;
(temp->data).value = &value;
于 2013-04-12T04:43:43.023 に答える