【发布时间】:2019-07-10 18:30:32
【问题描述】:
在这个函数中,我得到了分段错误。我认为这与内存分配有关。我犯了什么错误?
现在,如果我初始化 Node* a =NULL,我的头指针最终会为 NULL。
struct Node {
int data;
struct Node* next;
Node(int x) {
data = x;
next = NULL;
}
};
Node* addTwoLists(Node* first, Node* second) {
// Code here
Node *a;
Node *head = a;
int bor = 0;
while(first->next && second->next) {
int ans = first->data + second->data;
a = new Node((ans%10)+bor);
bor = ans/10;
a=a->next;
first = first->next;
second = second->next;
}
return head;
}
【问题讨论】:
-
您是否在调试器中单步执行您的程序,检查相关变量的值以及它们在每一步如何变化?如果没有,你应该这样做。调试是程序员必备的技能。
-
旁注:不确定
Node *head = a;的行为方式是否如您所想。不过,这不是 100% 确定的。 -
@Chipster 检查是循环条件。
-
另外,正如我认为 Stroustrup 所说,教师需要停止教授 C 并教授 C++
-
"我犯了什么错误?" - 手动实现一个链表,而不是使用标准的
std::list或std::forward_list类。
标签: c++ struct linked-list initialization singly-linked-list