【发布时间】:2015-03-06 22:36:13
【问题描述】:
我有以下代码:
int sum(LinkedList * list) {
assert(list!=NULL);
Node *currentNode = list->head;
int sum = 0;
for (currentNode = currentNode->next; currentNode !=NULL; currentNode = currentNode -> next) {
sum = sum + currentNode->data;
}
return sum;
}
我希望它返回链表 *list 中所有值的总和。但是,我不断遇到分段错误。谁能帮我找出致命错误?
【问题讨论】:
-
不确定错误,但您正在跳过列表的第一个元素,因为您以
for (currentNode = currentNode->next;开始循环。应该是for (currentNode = list->head; -
你永远不会检查
list->head是否为NULL。 -
在 for 循环之前跳过设置
currentNode可能更具可读性:for(currentNode = list->head; currentNode != NULL; currentNode = currentNode->next) -
调试器说发生了什么。至少哪一行失败
-
谢谢!我想我戴上了我的恐慌护目镜,跳过了细节。
标签: c++ pointers linked-list nodes