最初の 2 つの頂点の最短パスを見つけることは問題なく機能します。リンク リストとプライオリティ キューをクリアしようとすると、問題が発生します。
class llNode {
public:
int id;
int source;
int weight;
llNode* next;
llNode(int key, int distance, int from) {
id=key;
weight=distance;
source=from;
next = NULL;
}
};
class lList {
private:
llNode* root;
llNode* end;
void clearAll(llNode* toClear);
public:
lList() {
root = NULL;
}
void add(llNode* toAdd) {
if ( root == NULL) {
root = toAdd;
end = toAdd;
return;
}
end->next = toAdd;
end=end->next;
}
bool isFound(int key) {
for(llNode* ii= root; ii != NULL ; ii=ii->next) {
if ( ii->id == key) {
return true;
}
}
return false;
}
void clearAll();
};
void lList::clearAll() {
clearAll(root);
}
void lList::clearAll(llNode* toClear) {
if(toClear == NULL) {
return;
}
clearAll(toClear->next);
toClear=NULL;
}
これらの明確な方法に加えて、単純にルートを NULL に設定しようとしました。また、リストをトラバースして、各要素で削除を使用しようとしました。私はこれらの方法のいずれかで運がなければなりません。ルートが無効な場所に設定され続け、アクセス違反エラーが発生します。
私が見ていない単純なものはありますか?リンクされたリストからすべての要素を削除するにはどうすればよいですか?