嵌入式linux内核数据结构之双向链表 |
|
嵌入式linux内核双向链表的组织与存储 在单向链表中,每个节点中只包括一个指向下个节点的指针域,因此要在单向链表中插入一个新节点,就必须从链表头指针开始逐个遍历链表中的节点。双向链表与单向链表不同,它的每个节点中包括两个指针域,分别指向该节点的前一个节点和后一个节点,如图1.1所示:
这样,在双向链表中由任何一个节点都可以很容易地找到其前面的节点和后面的节点,而不需要在上述的插入(及删除)操作中由头节点开始寻找,定义双向链表的节点结构为: struct link_node 嵌入式linux内核双向链表的常见操作 (1)增加节点 在双向链表中增加一个节点要比在单链表中的插入操作复杂地多,因为在此处节点next指针和priv指针会同时变化,如图1.2所示:
由图中可以看出,在双向链表中增加一个节点会依次完成以下操作。 (2)删除节点 双链表中删除节点与单链表类似,也是增加过程的反操作,如图1.3所示
由图中可以看出,在双向链表中删除元素指针会依次有以下变化。 热点链接: |