我正在实现矢量类型。我一点都不担心算法或数据结构,但我不确定删除方法。例如:C++矢量实现 - 删除元素
bool Remove(Node* node)
{
/* rearrange all the links and extract the node */
delete node;
}
其中节点是一个指向我们在当前节点。但是,如果我删除节点,然后如何防止这种情况的发生:
Node* currentNode = MoveToRandNode();
Remove(currentNode);
cout << currentNode->value;
如果currentNode是一个指针的指针会更容易些。但它不是。
那么C或C++?根据选择的语言,答案会有很大差异。 – 2012-03-14 15:38:09
你不能防止这个 - 甚至文档不会防止错误(或者愚蠢的用户,你只需要让他们受苦一点)... :) – Nim 2012-03-14 15:38:30
你的代码看起来像C++,而不是C。通常涉及任何链接 - 它本质上是一个类似数组的结构,而不是链接结构。通常情况下,您只需简单地销毁目标对象,然后移动目标对象以填充空洞即可删除。 – 2012-03-14 15:39:51