【发布时间】:2019-11-22 12:31:23
【问题描述】:
我有一个整数(例如:123),我需要将它反向(逐位)存储在链表中。 但我似乎在列表末尾有一个额外的数字。 例如:807需要存储为“7 -> 0 -> 8” 但我的输出是“7 -> 0 -> 8 -> -1094795586”。
这是 leetcode 题“加两个数”的问题。
//我需要用结果填充“l”(反转)
void FillList(struct ListNode* l, unsigned long long int result)
{
struct ListNode *newNode = l;
newNode->val = 0;
while(result != 0)
{
newNode->val = result % 10;
result /= 10;
newNode->next = malloc(sizeof(struct ListNode));
newNode = newNode->next;
}
newNode->next = NULL;
}
输出是“7 -> 0 -> 8 -> -1094795586”,而不是“7 -> 0 -> 8”。
【问题讨论】:
-
你在循环中做的最后一件事是分配一个新节点而不给它任何值。
-
我可以只释放循环后的最后一个节点吗?
-
那将是一个肮脏的补丁,而不是一个解决方案。
-
谢谢。我明白了。
标签: c memory linked-list