溫馨提示×

如何使用list.h實現(xiàn)循環(huán)鏈表

小樊
83
2024-08-10 23:43:37
欄目: 編程語言

要實現(xiàn)循環(huán)鏈表,可以使用list.h中提供的雙向鏈表數(shù)據(jù)結(jié)構(gòu)和相關函數(shù)。以下是一個簡單的示例代碼:

#include <stdio.h>
#include "list.h"

int main() {
    struct list_head mylist;
    INIT_LIST_HEAD(&mylist);

    // 插入節(jié)點
    struct mydata {
        int num;
        struct list_head list;
    };

    struct mydata data1, data2, data3;
    data1.num = 1;
    data2.num = 2;
    data3.num = 3;

    list_add_tail(&data1.list, &mylist);
    list_add_tail(&data2.list, &mylist);
    list_add_tail(&data3.list, &mylist);

    // 遍歷鏈表
    struct list_head *pos;
    struct mydata *entry;
    list_for_each(pos, &mylist) {
        entry = list_entry(pos, struct mydata, list);
        printf("data: %d\n", entry->num);
    }

    // 刪除節(jié)點
    list_del(&data2.list);

    // 遍歷鏈表
    list_for_each(pos, &mylist) {
        entry = list_entry(pos, struct mydata, list);
        printf("data: %d\n", entry->num);
    }

    return 0;
}

在以上代碼中,首先定義了一個包含整型數(shù)據(jù)和list_head的結(jié)構(gòu)體mydata,然后創(chuàng)建了三個數(shù)據(jù)節(jié)點并插入到循環(huán)鏈表中。接著遍歷鏈表并輸出每個節(jié)點的數(shù)據(jù),最后刪除了第二個節(jié)點并再次遍歷鏈表。

通過使用list.h提供的函數(shù)和數(shù)據(jù)結(jié)構(gòu),可以方便地實現(xiàn)循環(huán)鏈表的操作。

0