鍊錶是一種線性資料結構,鍊錶中的每乙個元素都是乙個單獨的物件,我們將其稱之為節點。每個節點包含乙個資料域和乙個指向下乙個節點的指標域。這些節點可能儲存在記憶體中的不同位置,而不像陣列那樣儲存在連續的記憶體空間中。
鍊錶中可以儲存類似於陣列的資料,但是相比陣列,鍊錶在儲存上具有更多優勢。
在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...