C 里面如何使用链表 list
1. 学生时代, 那会学习 C 数据结构, 比较简单struct person { int id; char name[641]; struct person * next; };类似上面这样, 需要什么依赖 next 指针来回调整, 然后手工 print F5 去 debug 熬.2. 刚工作青年时代, 主要花活, 随大流类似#pragma once #include struct.h // // list.h 似魔鬼的步伐, 单链表库 // $LIST 需要嵌入 struct 的第一行 // void * list nullptr; // create list // list_delete(list, fide); // delete list [可选] // struct $list { struct $list * next; }; #define $LIST struct $list $node;或者类似/** * struct list_node - an entry in a doubly-linked list * next: next entry (self if empty) * prev: previous entry (self if empty) * * This is used as an entry in a linked list. * Example: * struct child { * const char *name; * // Linked list of all us children. * struct list_node list; * }; */ struct list_node { struct list_node *next, *prev; }; /** * struct list_head - the head of a doubly-linked list * h: the list_head (containing next and prev pointers) * * This is used as the head of a linked list. * Example: * struct parent { * const char *name; * struct list_head children; * unsigned int num_children; * }; */ struct list_head { struct list_node n; };杂技, 理解的心智负担稍微高一点, 但使用上对方有了单元测试, 比较成熟, list 结构问题较少, 除了业务的内存错位自己 debug 稍微麻烦点.3. 35岁中年之后struct write_buffer { struct write_buffer * next; const void * buffer; char * ptr; size_t sz; bool userobject; }; struct write_buffer_udp { struct write_buffer buffer; uint8_t udp_address[UDP_ADDRESS_SIZE]; }; struct wb_list { struct write_buffer * head; struct write_buffer * tail; };需要 list , 还是直接 next 指针来回调整.
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2482614.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!