C 编程 循环的链表



给定标准链表,其中"apples"是具有(->first和->last属性(的列表,而"apple"是该列表中具有(->next属性(的元素。这为循环如何工作?

typedef struct
{
list_element header;
int value;
} apple;
int main()
{
list apples;
apple * a = (apple *) malloc(sizeof(apple));
apple * b = (apple *) malloc(sizeof(apple));
apple * c = (apple *) malloc(sizeof(apple));
a->value = 1;
b->value = 2;
c->value = 3;
list_init(&apples);
list_push_back(&apples, &a->header);
list_push_back(&apples, &b->header);
list_push_back(&apples, &c->header);
for (a = (apple *) list_begin(&apples); a; a = (apple *) list_next(&a->header))
{
printf("%dn", a->value);
}

循环如何工作?list_begin函数只返回苹果的第一个 ->。这;一个;正如条件语句所说,如果不是 0,那么继续 for 循环?最后一部分将 指向循环中的下一个元素。因此,当循环的最后一个值为 a=0 时,什么会终止 for 循环?

这有意义吗?

for循环用于从第一个节点遍历到最后一个节点(直到(找到NULL(它用于遍历整个链表(。

第一个参数:a = (apple *) list_begin(&apples)a放在该列表的开头。

第二个参数:a是一个条件,当到达最后一个节点时会违反它,因为它将被NULL

thirst 参数:a = (apple *) list_next(&a->header)用于向下遍历列表。

for 的文档将帮助您:

for ( init_clause ; cond_expression ; iteration_expression ) loop_statement 

解释
行为如下:
...cond_expression在环体之前进行评估。如果表达式的结果为零,则立即退出循环语句。

在您的情况下,cond_expression只是a,当a为零(如果是指针,则为 NULL(时,循环退出。

相关内容

  • 没有找到相关文章

最新更新