![]() |
|||||||||||||||||||||||||||||||||||
嵌入式linux內核數據結構之循環鏈表 |
|||||||||||||||||||||||||||||||||||
鏈表作為嵌入式Linux內核中常見的數據結構,在之前的文章里我們分別介紹過了單向鏈表和雙向鏈表,今天主要介紹的則是循環列表。 單向鏈表的后一個節點的指針域為空(NULL)。如果將這個指針利用起來,以指向單向鏈表的第一個節點,就能組成一個單向循環鏈表,如圖1.1所示。
可以看到,循環鏈表的組織結構與單鏈表非常相似,因此其操作與單鏈表也是一致的,惟一的差別僅在于在單鏈表中,算法判端到達鏈表尾的條件是p→next是否為空,而在雙鏈表中,則是判斷p→next是否等于頭指針。 總而言之,循環鏈表的運算與單鏈表的運算基本一致,所不同的有以下幾點: 1、在建立一個循環鏈表時,必須使其后一個結點的指針指向表頭結點,而不是像單鏈表那樣置為NULL。此種情況還使用于在后一個結點后插入一個新的結點。 2、在判斷是否到表尾時,是判斷該結點鏈域的值是否是表頭結點,當鏈域值等于表頭指針時,說明已到表尾。而非像單鏈表那樣判斷鏈域值是否為NULL。 表1.1總結了各種鏈表的異同點。 表1.1 各種鏈表的異同點
熱點鏈接:
1、嵌入式linux內核數據結構之雙向鏈表 |