要實現循環鏈表,可以使用list.h中提供的雙向鏈表數據結構和相關函數。以下是一個簡單的示例代碼:
#include <stdio.h>
#include "list.h"
int main() {
struct list_head mylist;
INIT_LIST_HEAD(&mylist);
// 插入節點
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);
}
// 刪除節點
list_del(&data2.list);
// 遍歷鏈表
list_for_each(pos, &mylist) {
entry = list_entry(pos, struct mydata, list);
printf("data: %d\n", entry->num);
}
return 0;
}
在以上代碼中,首先定義了一個包含整型數據和list_head的結構體mydata,然后創建了三個數據節點并插入到循環鏈表中。接著遍歷鏈表并輸出每個節點的數據,最后刪除了第二個節點并再次遍歷鏈表。
通過使用list.h提供的函數和數據結構,可以方便地實現循環鏈表的操作。