C ++访问冲突写入位置

时间:2012-06-26 18:41:51

标签: c++ linked-list

我正在尝试创建一个链接列表,您可以在其中输入项目到列表中。我可以在列表中输入第一个项目但是我无法在第一个项目之后添加项目而不会导致程序崩溃。有谁知道什么是错的?

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

1 个答案:

答案 0 :(得分:1)

因为第一次设置

conductor = root->next;

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

conductor->next = new node;

未定义的行为

你应该做的是设置

conductor = root;

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