C++访问冲突写入位置



我正在尝试创建一个链表,您可以在其中将项目输入到列表中。我可以在列表中输入第一项,但我无法在第一项之后添加项目而不会使程序崩溃。有谁知道出了什么问题?

#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;
}

因为你第一次设置

conductor = root->next;

现在是NULL,并在下一次尝试时

conductor->next = new node;

这是未定义的行为

你应该做的是设置

conductor = root;

在第一次迭代中。 conductor应指向上次创建的节点,而不是指向NULL

相关内容

  • 没有找到相关文章

最新更新