嵌入式linux内核数据结构之循环链表 |
|||||||||||||||||||||||||||||||||||
链表作为嵌入式Linux内核中常见的数据结构,在之前的文章里我们分别介绍过了单向链表和双向链表,今天主要介绍的则是循环列表。 单向链表的后一个节点的指针域为空(NULL)。如果将这个指针利用起来,以指向单向链表的第一个节点,就能组成一个单向循环链表,如图1.1所示。
可以看到,循环链表的组织结构与单链表非常相似,因此其操作与单链表也是一致的,惟一的差别仅在于在单链表中,算法判端到达链表尾的条件是p→next是否为空,而在双链表中,则是判断p→next是否等于头指针。 总而言之,循环链表的运算与单链表的运算基本一致,所不同的有以下几点: 1、在建立一个循环链表时,必须使其后一个结点的指针指向表头结点,而不是像单链表那样置为NULL。此种情况还使用于在后一个结点后插入一个新的结点。 2、在判断是否到表尾时,是判断该结点链域的值是否是表头结点,当链域值等于表头指针时,说明已到表尾。而非像单链表那样判断链域值是否为NULL。 表1.1总结了各种链表的异同点。 表1.1 各种链表的异同点
热点链接:
1、嵌入式linux内核数据结构之双向链表 |