java参照linux内核链表的实现方式

2020-06-29  本文已影响0人  Source_

链表是一种很简单的数据结构,java里面的LinkedList提供了具体实现

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;
        }
    }

通常大部分链表都是这样的实现方式,将数据载体放入数据结构中,但是Linux内核的链表实现恰恰相反,它将数据结构放入到数据载体中

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

如果想让某个结构体成为链表,只需要加入这个成员变量即可

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

这种实现方式有显而易见的好处,在java开放过程中,如果想让某个实体具有链表的功能,不再需要创建新的数据结构,而可以直接让实体本身直接具有链表的功能,只需要在实体类中添加一个成员变量即可实现,对原有的代码侵入性非常小

上一篇下一篇

猜你喜欢

热点阅读