C语言中常用宏
创始人
2024-11-05 16:34:33

记录一些C语言常用到的一些经典的宏

  • TAILQ_HEAD 双向链表

TAILQ_HEAD 双向链表

#include  #include  #include   // 定义一个队列元素结构 struct entry {     int value;     TAILQ_ENTRY(entry) entries; // 定义链表指针字段 };  // 定义一个队列头结构 TAILQ_HEAD(tailhead, entry);  int main() {     // 初始化队列头     struct tailhead head;     TAILQ_INIT(&head);      // 插入元素到队列尾部     struct entry *elem1 = malloc(sizeof(struct entry));     elem1->value = 10;     TAILQ_INSERT_TAIL(&head, elem1, entries);      struct entry *elem2 = malloc(sizeof(struct entry));     elem2->value = 20;     TAILQ_INSERT_TAIL(&head, elem2, entries);      struct entry *elem3 = malloc(sizeof(struct entry));     elem3->value = 30;     TAILQ_INSERT_TAIL(&head, elem3, entries);      // 遍历队列中的每个元素     struct entry *elem;     printf("队列中的元素:\n");     TAILQ_FOREACH(elem, &head, entries) {         printf("%d\n", elem->value);     }      // 获取第一个元素     struct entry *first = TAILQ_FIRST(&head);     if (first) {         printf("第一个元素: %d\n", first->value);     }      // 获取下一个元素     struct entry *next = TAILQ_NEXT(first, entries);     if (next) {         printf("第二个元素: %d\n", next->value);     }      // 获取最后一个元素     struct entry *last = TAILQ_LAST(&head, tailhead);     if (last) {         printf("最后一个元素: %d\n", last->value);     }      // 从队列中移除一个元素     printf("移除元素: %d\n", elem2->value);     TAILQ_REMOVE(&head, elem2, entries);     free(elem2);      // 再次遍历队列中的每个元素     printf("移除后的队列:\n");     TAILQ_FOREACH(elem, &head, entries) {         printf("%d\n", elem->value);     }      // 释放剩余的元素     while ((elem = TAILQ_FIRST(&head)) != NULL) {         TAILQ_REMOVE(&head, elem, entries);         free(elem);     }      return 0; } 

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...