【问题标题】:Returning sum of values in linked list返回链表中值的总和
【发布时间】: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


【解决方案1】:

将循环更改为:

for (currentNode = list->head; currentNode !=NULL; currentNode = currentNode -> next) {
    sum = sum + currentNode->data;
}

这将解决两个问题:

  1. 它将检查list->head 不是NULL
  2. 计算总和时不会跳过列表中的第一个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多