数据结构定义
/* 优先级链表头 */
struct plist_head {
struct list_head node_list;
};
/* 优先级链表节点 */
struct plist_node {
int prio; /* 当前节点的优先级 */
struct list_head prio_list; /* 用于串联优先级链表中不同优先级的节点 */
struct list_head node_list; /* 用于串联优先级链表中所有节点 */
};
数据结构示意图
- node_list 中包含该优先级链表的所有元素,按优先级由小到大的顺序排列,对于相同优先级的节点,按照先后顺序依次位置
- prio_list 中仅包含链表中优先级不同的节点,同样按照优先级由小到大的顺序排列,主要用于在链表元素过多时,做快速的优先级查找

链表节点操作
添加节点
void plist_add(struct plist_node *node, struct plist_head *head)
{
struct plist_node *first

本文详细介绍了优先级链表的数据结构,包括结构定义、节点操作如添加和删除。优先级链表通过两个链表分别维护优先级不同的节点和所有节点,确保高效查找和操作。在添加节点时,根据优先级进行排序;删除节点时,处理可能的优先级变化。此数据结构适用于需要快速按优先级访问的场景。
最低0.47元/天 解锁文章
457

被折叠的 条评论
为什么被折叠?



