Java資料結構之鍊錶 雙端鍊錶

2021-09-20 02:57:49 字數 1476 閱讀 6348

鍊錶(linked list)

是一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料,而是在每乙個節點裡存到下乙個節點的指標(pointer)。

使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶體空間,實現靈活的記憶體動態管理。但是鍊錶失去了陣列隨機讀取的優點,同時鍊錶由於增加了結點的指標域,空間開銷比較大。

雙端鍊錶:

只能從乙個方向遍歷,相對於單向鍊錶多了乙個對尾節點的引用,這樣在操作新增尾節點會方便很多;在單向鍊錶中,新增尾節點每次都需要從頭節點遍歷到尾部找到尾節點再新增。

示例**:

/**

* created by administrator on 2019/4/28.

*/public class doublepointlinkedlist

}public doublepointlinkedlist()

//新增頭結點

public node addhead(object data) else

this.size++;

return node;

}//新增尾節點

public node addtail(object data)

//是否為空

public boolean isempty()

//刪除頭結點

public node delhead()

this.head = node.next;

this.size--;

return node;

}//刪除尾節點

public node deltail()

if(null == node.next.next)

node = node.next;

}this.size--;

return node;

}//根據節點內容查詢節點

public node findobj(object data)

}return null;

}//顯示節點資訊

public void display() else

node = temp;

}system.out.println("]");

}}

測試**:

public class main 

private static void testsinglelinkedlist()

private static void testdoublepointlinkedlist()

}

測試結果:

[a->b->c]

[a->b->c->d->e->f]

[b->c->d->e->f]

[b->c->d->e]

鍊錶結構之雙端鍊錶

雙端鍊錶 雙端鍊錶與傳統鍊錶非常相似.只是新增了乙個屬性 即對最後乙個鏈結點的引用 如上圖所示 由於有著對最後乙個鏈結點的直接引用.所以雙端鍊錶比傳統鍊錶在某些方面要方便.比如在尾部插入乙個鏈結點.雙端鍊錶可以進行直接操作 但傳統鍊錶只能通過next節點迴圈找到最後鏈結點操作.所以雙端鍊錶適合製造佇...

資料結構 雙端鍊錶和雙向鍊錶

雙端鍊錶 一 什麼是雙端鍊錶。鍊錶中儲存著對最後乙個鏈節點引用的鍊錶。二 從頭部進行插入 要對鍊錶進行判斷,如果為空則設定尾節點為新新增的節點。三 從尾部進行插入 如果鍊錶為空,則直接設定頭結點為新新增的節點,否則設定尾節點的後乙個節點為新新增節點。四 從頭部進行刪除 判斷頭結點是否為下乙個結點,如...

redis資料結構之雙端鍊錶

redis 的鍊錶資料結構基於 adlist.h 檔案定義的以下三種資料結構來展開 node typedef struct listnode listnode 這裡 node 的value 為什麼要弄成指標?是為了相容多種型別的 node 顯然這裡的 node 既可以儲存 int等常規數字,也可以存...