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