我试图在 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 members和 tagged unions .
阅读一些 Introduction to Algorithms关于S-expressions (也许大约 AST s)。
关于c - 在 C 中实现一个非矩形数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49043320/