【发布时间】:2020-02-26 09:30:15
【问题描述】:
下面的代码应该采用一个整数(即分子)并将其转换为一个链表,从最后开始。例如,对于整数 603,我想创建 3->0->6。但是由于某种原因,我的输出只给了我 0->6,而完全忽略了 3?我查看了我的代码,但似乎看不出我的逻辑哪里出错了。
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
}
int numerator = sum1 + sum2;
ListNode * ptr;
while (numerator != 0) {
int val = numerator % 10;
numerator = numerator / 10;
ListNode * node = new ListNode(val);
// If list is empty, add node.
if (!ptr) {
ptr = node;
// If list is not empty, traverse to end of list and then append.
} else {
while (ptr->next) {
ptr = ptr->next;
}
ptr->next = node;
}
}
【问题讨论】:
-
ListNode * ptr;是一个未初始化的指针。它的值通常不是 0,而是一些垃圾值。if (!ptr)的条件通常为假。请提供minimal reproducible example -
您可以通过确保所有变量都已初始化来避免无数错误。