这里有两个链表'list1'和'list2'。
list1 和 list2 有两个数据:data1,data2。
它们有以下节点:(data1, data2)
list1 : (1,1) - (2,2) 列表 2:(3,3)-(4,4)-(5,5)
(括号表示每个节点)
while (list2 != NULL)
{
while (list1 != NULL)
{
printf("list1 contains : %d, %f\n", list1->data1, list1->data2);
list1 = list1->NextNode;
}
printf("list2 contains : %d, %f\n", list2->data1, list2->data1);
list2 = list2->NextNode;
}
起初,我期望输出为:
list1, list1, list2, list1, list1, list2, list1, list1, list2(我的意思是打印顺序)
但是我得到了:
list1, list1, list2, list2, list2.
所以我的问题是:
为什么我的期望落空了?
我应该如何更改我的代码以使代码像我期望的那样工作?
谢谢
内部 while 循环第一次执行后(它的第一次和单次迭代)
while (list2 != NULL)
{
while (list1 != NULL)
{
printf("list1 contains : %d, %f\n", list1->data1, list1->data2);
list1 = list1->NextNode;
}
printf("list2 contains : %d, %f\n", list2->data1, list2->data1);
list2 = list2->NextNode;
}
指针
list1
变得等于NULL
。然后在内部 while 循环之后执行代码后,指针 list2
也等于 NULL
。所以两个 while 循环只有一次迭代。