0

我在学校尝试编写一个简单的家庭作业,并得到错误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 ++类,因为是老师的要求,衷心感谢您的帮助!

4

1 回答 1

3

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

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

void addWord(string word, string meaning)

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

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

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

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

于 2012-11-25T05:48:16.760 回答