【发布时间】:2016-11-02 02:15:27
【问题描述】:
我编写了一个函数来合并 2 个排序的链表。但是在我知道我想出的逻辑是否正确之前,我在调用该函数时遇到了一个无限循环。我不确定为什么会这样。下面是代码:
ListNode *merge_sorted_list(ListNode *head1, ListNode *head2) {
cout<<"hi\n";
ListNode *curr = new ListNode(-1);
ListNode *start = curr;
cout<<"hi\n";
while(head1 || head2) {
if(head1->val == head2->val) {
curr->next = head1;
curr = curr->next;
curr->next = head2;
if(head1) head1 = head1->next;
if(head2) head2 = head2->next;
} else if(head1->val < head2->val) {
curr->next = head1;
curr = curr->next;
if(head1) head1 = head1->next;
} else {
curr->next = head2;
curr = curr->next;
if(head2) head2 = head2->next;
}
}
return start->next;
}
我无法在控制台窗口上打印“hi”。此外,head1 和 head2 不是 NULL 值。 请帮忙。 更新:现在可以看到“hi”了。
【问题讨论】:
-
记住标准输出是行缓冲的,所以如果你把它改成
"hi\n",你可能会看到你的打印输出。 -
感谢@ThomasPadron-McCarthy!我现在可以看到“嗨”了。但是代码仍然无限运行。请问有什么建议吗?
-
学习使用调试器?
-
如果
NULL中的列表节点之一怎么办?
标签: c++ linked-list infinite-loop