没有类的c ++链表:分段错误

时间:2012-11-25 05:32:58

标签: c++ list linked-list structure

我正在学校编写一个简单的家庭作业,并以这种方式获得错误 Segmentation fault(core dumped)在C ++中实现链接列表:

struct Word{
    string word;
    string meaning;
    Word * next;
};

struct dictionary{
    Word *head = NULL;
    int count;
}dict;

string addWord(string word, string meaning){
    Word *newWord = new Word;
    newWord -> word = word;
    newWord -> meaning = meaning;
    newWord -> next = dict.head;
    dict.head = newWord;
    dict.count++; 
}

我正在尝试在收到错误时添加一个单词(节点),我不能使用c ++类,因为是老师的请求,谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

dict.count永远不会被初始化。鉴于您的编译器可以在struct定义中包含默认初始化,您应该在int count = 0;处定义它。这可能不会导致您的段错误,但您仍需要修复它。

我怀疑addWord未能返回string,尽管它具有返回值,可能导致您的段错误。这会导致未定义的行为(可能会崩溃)。一个有价值的编译器会给你一个致命的警告,写你编写的代码。将addWord的返回类型更改为void。像这样:

void addWord(string word, string meaning)

关于在本网站上发布问题的一般建议:

发布问题时,请包含编译和运行代码所需的所有内容,包括main方法。从您的代码中删除您认为不重要的任何内容,但您留下的内容仍然应该运行,并且应该证明您的问题。

当你显示不完整的代码时,你就是个傻瓜:如果你知道什么是重要的,你就不需要寻求帮助,是吗?所以你需要发布完整的代码。

当你显示太多代码时,你是不礼貌的。首先将代码缩减到显示问题的最小示例,但保留完整,以便我们可以看到您的真正问题所在。