我正在C中完成一项家庭作业,我认为二叉搜索树是实现我的解决方案的最佳方式.问题是我们不允许定义结构或任何复合数据类型,所以没有
struct TreeNode {
struct TreeNode* parent;
struct TreeNode* left;
struct TreeNode* right;
int key;
int value;
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
树必须完全用指针实现,所以我一直在尝试定义一些宏来使导航和编辑树更容易,比如这个用来获取指向节点父节点的指针(指针所在的位置)是无效指针):
#define PARENT(ptr) *(void *)(ptr+ALIGNMENT)
Run Code Online (Sandbox Code Playgroud)
当然,问题在于你无法取消引用void指针.我的问题是:如果你有一个void指针指向存储器中存储另一个void指针的位置,你怎么能读取存储的指针.
或者,如果这是不可能的,有没有更好的方法来做这棵树?