-1

リストに項目を入力できるリンク リストを作成しようとしています。リストに最初の項目を入力できますが、最初の項目の後に項目を追加すると、プログラムがクラッシュします。誰が何が悪いのか知っていますか?

#include <string>
#include <iostream>

using namespace std;
struct node {
  string s;
  node *next;
};
  node *root;
  string ans;
  node *conductor;
void displayNodes() {
  conductor = root;
  while ( conductor != NULL ) {
  cout<< conductor->s << endl;
  conductor = conductor->next;
  }
}
void addNode(string str) {
    if (root == NULL) {
         root = new node; 
        root->next = NULL;
        root->s = str;
        conductor = root->next;
        return;
    }
    conductor->next = new node;
  conductor = conductor->next;
  conductor->next = NULL;
  conductor->s = str;
}
void deleteNode(string str) {
    while (conductor != NULL) {
        if (conductor->s == str) {
            conductor->next = conductor;
        } else {
            conductor = conductor->next;
        }
    }
}
int main() {
    while (true) {
        system("cls");
        cout << "Enter a string: ";
        cin >> ans;
        addNode(ans);
        system("cls");
        displayNodes();
        system("pause");
    }
  system("pause");
  return EXIT_SUCCESS;
}
4

1 に答える 1

1

初めて設定するので

conductor = root->next;

これは現在NULLであり、次の試行で

conductor->next = new node;

これは未定義の動作です。

やるべきことは決まっている

conductor = root;

最初の繰り返しで。conductorではなく、最後に作成されたノードを指す必要がありますNULL

于 2012-06-26T18:44:49.573 に答える