-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 回答