【发布时间】:2023-04-04 11:37:01
【问题描述】:
我使用的是链表(不是内置的),这里我正在实现一个逻辑来比较节点(信息)的第一个字符,然后返回单词..
通过这个,我在 currN = currNode->getInfo();
行遇到了分段错误这是我的程序:
template<class T>
string LinkedList<T>::searching(T word) {
Node<T> *currNode = head;
string currN = currNode->getInfo();
while (currNode != NULL && currN[0] != word[0]){
currNode = currNode->getNext();
currN = currNode->getInfo();//error in this line
}
if(currNode) {
val=currNode;//storing the address in a private pointer
string cur = currNode->getInfo();
return cur;
}
else{
return "";
}}
获取信息:
// in Node class
private:
T info;
template<class T>
T Node<T>::getInfo() //getter for info
{
return info;
}
这里我在变量T 字 中传递字符串。一点帮助表示赞赏
【问题讨论】:
-
看起来你没有检查 currNode / head 是否为
nullptr。此外,您没有显示getInfo()函数,因此我们无法说出其中可能隐藏的任何问题 -
minimal reproducible example,如果您希望人们(包括您自己!)阅读和理解它,请保持一致的格式!另外,完整的回溯!
-
getInfo() 只是获取存储在 info 中的字符串形式的数据
-
那么你的脑袋可能是 nullptr,我也建议学习如何使用调试器来获取有关在这种情况下发生的更多信息!
-
在此行之后
currNode = currNode->getNext();你的currNode将在列表末尾为空,但你这样做currN = currNode->getInfo();
标签: c++ linked-list