私はベクトル型を実装しています。私はアルゴリズムやデータ構造に全く悩まされていませんが、私はremoveメソッドについてはわかりません。C++ベクタの実装 - 要素を削除する
bool Remove(Node* node)
{
/* rearrange all the links and extract the node */
delete node;
}
ここで、nodeは、現在のノードへのポインタです。しかし、私はノードを削除した場合、その後どのように私はこのようなことが起こらないでください:currentNodeのは、それが容易になるだろうポインタへのポインタであったが...場合
Node* currentNode = MoveToRandNode();
Remove(currentNode);
cout << currentNode->value;
そうではありません。
CまたはC++?回答は選択した言語によって大きく異なります。 –
あなたはこれを防ぐことはできません - ドキュメントでも間違いを防ぐことはできません(または馬鹿馬鹿しいユーザー、ちょっとした苦しみを許さなければなりません)... :) – Nim
あなたのコードはC++のように見えます。通常はリンクを使用します。リンクされた構造ではなく、配列のような構造を包むラッパーです。通常は、対象オブジェクトを単に破壊して、それを後に移動して穴を埋めることで削除します。 –