链表是一种很简单的数据结构,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开放过程中,如果想让某个实体具有链表的功能,不再需要创建新的数据结构,而可以直接让实体本身直接具有链表的功能,只需要在实体类中添加一个成员变量即可实现,对原有的代码侵入性非常小