鍊錶(LInked LIst 鍊錶介紹

2021-10-02 20:08:42 字數 867 閱讀 3585

鍊錶是一種線性資料結構,鍊錶中的每乙個元素都是乙個單獨的物件,我們將其稱之為節點。每個節點包含乙個資料域和乙個指向下乙個節點的指標域。這些節點可能儲存在記憶體中的不同位置,而不像陣列那樣儲存在連續的記憶體空間中。

鍊錶中可以儲存類似於陣列的資料,但是相比陣列,鍊錶在儲存上具有更多優勢。

在c語言中,我們定義乙個包含資料域和指標域的node如下:

struct node
與陣列相比,鍊錶具有以下兩大優勢:

沒有固定大小 鍊錶不需要固定記憶體大小。當建立乙個新節點時,將動態分配用於儲存節點的記憶體位置。沒有使用的位置不會佔據記憶體位址。與陣列相比,陣列智慧型一次性固定記憶體大小,且擴充或者縮減陣列時代價會非常昂貴。

插入和刪除效率極高 在節點之間進行快速刪除和插入所花費的時間恆定。相反,處理陣列時,插入和刪除需要遍歷陣列中的所有元素。

access

search

insertion

deletion

space

o(n)

o(n)

o(1)

o(1)

o(n)

與陣列相比,使用鍊錶存在一些缺點

建立鍊錶,我們需要根據需要建立鍊錶的資料型別定義乙個頭節點。

每種型別的列表都具有特定的屬性,並且據偶有關列表的優點。

鍊錶的設計形式取決於鍊錶的用途,其中最常見的3中煉表型別如下:

單鏈表(singly linked list)

雙鏈表(double linked list)

環形鍊錶(circular linked list)

鍊錶 Linked List(雙向鍊錶)

單鏈表與雙鏈表的區別 單向鍊錶,查詢的方向只能是乙個方向,而雙向鍊錶可以向前或者向後查詢。單向鍊錶不能自我刪除,需要靠輔助節點,而雙向鍊錶,則可以自我刪除,所以單鏈表刪除節點時,總是找到temp的下乙個節點來刪除的 雙鏈表doublelinkedlist 大部分 與單鏈表的例項相同 單鏈表例項 單擊...

LinkedList 鍊錶

線性表是一種簡單的資料結構,其主要特點是元素之間存在 一對一 的關係,除去第乙個元素,每個元素都存在唯一乙個 前驅節點 除去最後乙個元素都存在唯一乙個 後繼節點 簡單的線性表有 陣列 單鏈表 雙向鍊錶 靜態鍊錶等。順序表 陣列 優缺點 陣列不僅邏輯上,物理上位置也相鄰,可隨機訪問,但刪除或插入元素時...

LinkedList 鍊錶

最近複習到鍊錶 linkedlist 一般來說共有大概有兩種實現方式 1.陣列實現 和 2.鏈式實現。我僅使用了直接鏈式實現,如下。其他的實現方式,大家不妨自己嘗試下吧。author ace yom peizhen zhang date 2015 8 17 description 鍊錶實現 ifnd...