Creating a linked list without declaring node as a pointer中有答案。但我想知道是否还有其他原因导致您无法将节点创建为指针,只是为了清楚起见。
原因之一是新节点的作用域会在函数之外消亡——有没有办法解决这个问题呢?,以及 难道还有其他原因吗?
最佳答案
我一直在使用很多链表(甚至更复杂的结构),其中没有在堆上单独分配节点,但所有节点都是单个数组中的元素。
拥有指向节点的指针并在堆上分配单个节点很常见,但到目前为止不是唯一的选择。例如,对于某些应用程序来说,为了提高效率或简化处理,在“页面”中分配节点可能会更好。
另一个非常常见且经常有用的选项是通过使用数组中的数字索引来创建根本没有指针(甚至不在节点内部)的链表或树。例如
struct Tree {
struct Node {
double value;
int left, right; // Index of left/right child, -1 if missing
};
int root = -1;
std::vector<Node> nodes;
};
关于c++ - 为什么不能在不创建节点作为指针的情况下创建链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61097899/