簡體   English   中英

C編程循環鏈接列表

[英]C programming Linked list for loop

給定標准鏈接列表,其中“ apples”是具有(-> first和-> last屬性)的列表,而“ apple”是具有(-> next屬性)的列表元素。 這個for循環如何運作?

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("%d\\n", a->value); } 

這個for循環如何工作? list_begin函數只返回-> first of apples。 ; a; 如條件語句所說,如果不為0,則繼續for循環嗎? 最后一部分將a指向循環中的下一個元素。 因此,當循環的最后一個值是a = 0時,將終止for循環嗎?

那有意義嗎?

for的文檔將幫助您:

 for ( init_clause ; cond_expression ; iteration_expression ) loop_statement 

說明
表現如下:
... cond_expression在循環主體之前評估。 如果表達式的結果為零,則循環語句立即退出。

在您的情況下, cond_expression僅為a並且當a為零(對於指針為NULL)時,循環退出。

for循環用於從第一個節點到最后一個節點遍歷(直到),發現它為NULL (遍歷整個鏈表)。

第一個參數: a = (apple *) list_begin(&apples)a放在該列表的開頭。

第二個參數: a是一個條件,它將在到達最后一個節點之后被違反,因為它將為NULL

口渴參數: a = (apple *) list_next(&a->header)用於遍歷列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM