1.ds
list head
struct hlist_head{
hlist_node *first;
}
list node
struct hlist_node{
struct hlist_node *next;
struct hilist_node **pprev;
}
单头指针的双链表,减少内存空间。但是损失了直接访问链表尾部的能力。
first:指向头节点
next:指向下一个节点
最后一个节点的next = NULL
pprev:前一个节点next的地址
头节点的pprev指向hlist_head->first的地址
*pprev: 前一个节点next指向的地址。