c - 在 C 中实现一个非矩形数组

标签 c arrays struct

我试图在 C 中实现一个非矩形的多维数组,即类似这样的东西:

[1, 2, [3, [4, 5, [6]]], 7]

截至目前,我正在使用这样的树:

enum item_type { ELEMENT, ARRAY };
struct item {
    int value;
    struct item *next;
    enum item_type type;
};

能否以某种方式简化或改进?

编辑:为了更清楚地说明这一点,请练习“翻译”来自高级语言的一些概念,例如以下 python 代码:

array = [1, 2, [3, [4, 5, [6]]], 7]

最佳答案

原因abstract data types . 也许你的东西更像是tree (或者可能是 DAG )而不是数组。

因此,首先,详尽地(在纸上)定义非矩形“数组”上的所有操作(我对它们没有确切的想法,因为你的问题是模糊的)。多想想你是如何创建、访问和修改你的东西的。

然后实现该抽象数据类型。参见 this举一个更简单的例子(矩阵)。也许你可以使用 flexible array memberstagged unions .

阅读一些 Introduction to Algorithms关于S-expressions (也许大约 AST s)。

关于c - 在 C 中实现一个非矩形数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49043320/

相关文章:

c - 罢工行为

c - 不完美嵌套循环中的最内层循环是什么?

c++ - 错误 : cannot specify explicit initializer for array

更改内存地址而不是 C 上结构中的值

c++ - 循环保存openGL中的顶点

iPhone - 为什么编译器在为 ARM 架构构建时找不到某些包含?

python - 在python中打印出数组中的模式

php - 在 PHP 中如何确定它是数组还是哈希?

c - C语言中如何复制结构体数据?

c - 使用预先计算的成员长度在堆栈上分配结构的宏