鏈表是一種很簡單的數(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ì)原有的代碼侵入性非常小