☰
侵入式双向链表
2026/9/30 11:25:44 网站建设 项目流程

侵入时双向链表不需要单独进行内存分配,跟随具体结构进行分配,详细数据结构:

typedef structure list_node { struct list_node *next; struct list_node *prev; } list_t;

链表初始化

初始化链表,哨兵自己成环。

list->next = list; list->prev = list

尾插

将节点node插到list之后,这里需要注意先操作node节点,否则会破坏链表结构,node的后继指针指向list节点的下一个节点,node的前驱指针指向list节点,list节点的后继指针指向node,list的下一个节点的前驱指针指向node。

node->next = list->next; node->prev = list; list->next->prev = node; list->next = node;

头插

将节点node插到list之前,这里需要注意先操作node节点,node的前驱指针指向list的上一个节点,node的后继指针指向list,list的上一个节点的后继节点指向node,list的前驱指针指向node。

node->prev = list->prev; node->next = list; list->prev->next = node; list->prev = node;

移除

将该节点指向自己成环,并将node的前后两个节点连接起来,并将自己设置成环。

node->prev->next = node->next; node->next->prev = node->prev; node->prev = node; node->next = node;

判断链表是否为空,通过判断list的后继指针是否指向自己,也就是当前哨兵是否指向自己。

list->next == list

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询