久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久


嵌入式linux內核數據結構之雙向鏈表

分享到(dao):
           

    嵌入式linux內核雙向鏈表的組織與存儲

    在單向鏈表中(zhong),每個(ge)節(jie)(jie)點(dian)(dian)(dian)中(zhong)只包括一(yi)個(ge)指向下個(ge)節(jie)(jie)點(dian)(dian)(dian)的指針(zhen)域(yu),因此要(yao)在單(dan)向鏈表(biao)中(zhong)插(cha)入一(yi)個(ge)新節(jie)(jie)點(dian)(dian)(dian),就必須從鏈表(biao)頭(tou)指針(zhen)開(kai)始逐個(ge)遍歷鏈表(biao)中(zhong)的節(jie)(jie)點(dian)(dian)(dian)。雙向鏈表(biao)與單(dan)向鏈表(biao)不同(tong),它的每個(ge)節(jie)(jie)點(dian)(dian)(dian)中(zhong)包括兩個(ge)指針(zhen)域(yu),分別指向該節(jie)(jie)點(dian)(dian)(dian)的前一(yi)個(ge)節(jie)(jie)點(dian)(dian)(dian)和(he)后一(yi)個(ge)節(jie)(jie)點(dian)(dian)(dian),如圖1.1所示:


圖1.1 雙(shuang)向鏈表結構

    這樣,在雙向(xiang)鏈表中由(you)(you)任何一個節點(dian)都可以很(hen)容易地找到其(qi)前面(mian)的節點(dian)和后(hou)面(mian)的節點(dian),而不需要在上述的插入(ru)(及刪(shan)除(chu))操作中由(you)(you)頭節點(dian)開始尋(xun)找,定義雙向(xiang)鏈表的節點(dian)結(jie)構為:

    struct link_node
    {
        element_type data; /*element_type為有效數據類型*/
        struct link_node *next;
        struct link_node *priv;
    };

    嵌入式linux內核雙向鏈表的常見操作

    (1)增加節點

    在(zai)雙向鏈表中(zhong)增加一(yi)個(ge)節點(dian)要比在(zai)單(dan)鏈表中(zhong)的插入操作復雜地多,因(yin)為在(zai)此處節點(dian)next指(zhi)針和priv指(zhi)針會同時變化,如圖1.2所示:


圖1.2 雙向鏈表插入操作

    由圖中可以看出,在雙向鏈表中增加一個節點會依次完成以下操作。
    ●  創建新節點
    ●  使B前方指向C:B→priv = C。
    ●  使C后方指向B:C→next = B。
    ●  使A后方指向C:A→next = C。
    ●  使C前方指向A:C→priv = A。

    (2)刪除節(jie)點

    雙(shuang)鏈(lian)(lian)表中(zhong)刪(shan)除節點(dian)與單鏈(lian)(lian)表類(lei)似,也是(shi)增加(jia)過(guo)程的反操作,如圖1.3所示



圖1.3 雙向鏈(lian)表刪除操作(zuo)

    由圖中可以看出,在雙向鏈表中刪除元素指針會依次有以下變化。
    ●  使C前方指向A:C→priv = A。
    ●  使A后方指向C:A→next = C。
    ●  使B前后方指向NULL:B->priv = NULL和B->next = NULL ,或(若不再需要該節點)釋放節點B。

   熱點鏈接:

   1、Linux內核模塊程序結構
   2、嵌入式Linux內核如何編譯
   3、嵌入式linux內核數據結構之單向鏈表

更多新聞>>