小编Pet*_*ter的帖子

C 中的通用数据结构

有没有办法在 C 中创建通用数据结构并根据存储的数据类型使用函数,该结构具有各种类型的数据,例如可以根据存储的数据进行打印。

例如,

假设我希望创建一个只存储 float 和 int 的二叉搜索树。自然的方法是创建一个包含 int 和 float 的枚举。它看起来像这样:

Typedef enum {INT, FLOAT} DataType;

Typedef struct node
{
    void *data;
    DataType t;
    struct node *left,
                *right;
}Node;
Run Code Online (Sandbox Code Playgroud)

如果我想打印出来:

void printTree(Node *n)
{
    if (n != NULL)
    {
        if (n->t == INT)
        {
            int *a = (int *) n->data;
            printf("%d ", *a);
        }
        else
        {
            float *a = (float *) n->data;
            printf("%f ", *a);
        }

        printTree(n->left);
        printTree(n->right);
    }
}
Run Code Online (Sandbox Code Playgroud)

没关系,但我想将另一种数据类型存储为堆栈、查询或其他内容。这就是为什么我创建了一个不依赖于特定数据类型的树,例如:

Typedef struct node
{
    void *data;
    struct …
Run Code Online (Sandbox Code Playgroud)

c generic-collections data-structures

5
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×1

data-structures ×1

generic-collections ×1