私は機能を実行したい非常に単純なリンクリストを持っていますが、私は自分のコードを実行すると 'root'ノードで読み取りアクセス違反エラーが発生します。ここでC++でリンクされたリストの読み取りアクセス違反
私が手にエラーが(コードの行は、私はエラーを取得した後、私はコメントし)されます。
例外がスローさ:アクセス違反をお読みください。 ルートは0xCCCCCCCCでした。 この例外のハンドラがある場合は、プログラムを安全に続行できます。
これは構造体である:
struct node {
int value;
node* link;
node(int val) {
link = NULL;
value = val;
}
};
まず私はこのような主な機能でそのリンクリストを初期化:
int main()
{
node *root;
addnode(root, 20);
addnode(root, 1);
addnode(root, 50);
node *curr;
for (curr = root; curr->link != NULL; curr = curr->link) { // I get error here
cout << curr->value << " ";
}
cout << endl;
cout << "Number of elements " << countlist(root) << endl;
getchar();
return 0;
}
と(最初のものは、ノードを追加していると呼ばれている機能を、リスト内のノードの数を数えます。):
void addnode(node *&root, int val) {
if (root != NULL) { // I get error here
node *temp=new node(val);
temp->link = root;
root = temp;
}
else
root = new node(val);
}
int countlist(node *root) {
if (root != NULL) {
int count = 0;
do {
count++;
root = root->link;
} while (root->link != NULL); // I get error here
return count;
}
return 0;
}
T彼は私がコード内のコメントで言及した行に入っています。
セイ、 'root == 0x12345'、' root-> next == NULL'のようになります。あなたの状態が何を確認すると思いますか? –
'root'は初期化されていませんが、(ランダムな、初期化されていない)値が使用されます。 –
あなたのコードはうまく動作します。このバグを再現するための詳細情報を提供できますか? – LibertyPaul