java參照linux內(nèi)核鏈表的實(shí)現(xiàn)方式

鏈表是一種很簡單的數(shù)據(jù)結(jié)構(gòu),java里面的LinkedList提供了具體實(shí)現(xiàn)

private static class Node<E> {
        E item;
        Node<E> next;
        Node<E> prev;

        Node(Node<E> prev, E element, Node<E> next) {
            this.item = element;
            this.next = next;
            this.prev = prev;
        }
    }

通常大部分鏈表都是這樣的實(shí)現(xiàn)方式,將數(shù)據(jù)載體放入數(shù)據(jù)結(jié)構(gòu)中,但是Linux內(nèi)核的鏈表實(shí)現(xiàn)恰恰相反,它將數(shù)據(jù)結(jié)構(gòu)放入到數(shù)據(jù)載體中

struct list_head {
    struct list_head *next, *prev;    
};

如果想讓某個(gè)結(jié)構(gòu)體成為鏈表,只需要加入這個(gè)成員變量即可

struct person 
{ 
    int age; 
    char name[20];
    struct list_head list; 
};

這種實(shí)現(xiàn)方式有顯而易見的好處,在java開放過程中,如果想讓某個(gè)實(shí)體具有鏈表的功能,不再需要?jiǎng)?chuàng)建新的數(shù)據(jù)結(jié)構(gòu),而可以直接讓實(shí)體本身直接具有鏈表的功能,只需要在實(shí)體類中添加一個(gè)成員變量即可實(shí)現(xiàn),對(duì)原有的代碼侵入性非常小

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容