鍊錶之單鏈表

2021-09-26 23:05:41 字數 1494 閱讀 4848

上週給前端的小夥伴們進行了講課,想著總結一下,但是直到推到現在,我才開始。上週講課的內容是es6和鍊錶。我大致把鍊錶的內容總結一下,也算是個回顧。

一、初始鍊錶

鍊錶定義:使用一組任意的儲存單元儲存線性表的資料元素(可連續,也可是不連續),它是一種順序儲存。

也就是說,鍊錶是線性結構,各個元素的儲存位置都是隨意的,邏輯結構連續,物理結構不連續。鍊錶只能從表頭開始依次向後遍歷鍊錶,直到找到第i個位置上的元素,時間複雜度為o(n),即取值操作的效率低。

而與之對應的是陣列:他是一種隨機儲存結構,指定任意乙個位置序號i,都可以在o(1)時間內直接儲存該位置上的元素,即取值操作的效率高。

因此:陣列適合----訪問元素

鍊錶適合----插入和刪除

二、鍊錶組成

每個結點由資料域指標域組成,乙個個結點組成了鍊錶,每個鍊錶只有頭結點被標記,最後的結點指向空(null)。

三、鍊錶小試

leetcode203 移除鍊錶元素

刪除鍊錶中等於給定值 val 的所有節點。

示例:輸入: 1->2->6->3->4->5->6, val = 6

輸出: 1->2->3->4->5

方法一:考慮頭結點

public listnode removeelements

(listnode head,

int val)

if(head == null)

listnode prev = head;

while

(prev.next != null)

else

}return head;

}

方法二:設定虛擬頭結點

public listnode removeelements

(listnode head,

int val)

else

}return dummyhead.next;

}

方法三:遞迴

public listnode removeelements

(listnode head,

int val)

listnode res =

removeelements

(head.next,val);if

(head.val==val)

else

}

這三種方法,都可以實現,大家可以自行理解。

四、列印測試

可以用陣列模擬傳入,寫乙個內部方法,把陣列轉化成鍊錶,最後再寫乙個方法,以字串的形式列印出來。

單鏈表之歸併鍊錶

兩個鍊錶都是增序,要求合併後的結果也為增序且不含重複資料 直接上 編譯環境vs2017 include pch.h include using namespace std 單鏈表 typedef struct lnode lnode 輸出單鏈表 void outputlist lnode c cou...

單鏈表 鍊錶倒置

鍊錶屬於動態資料結構,可以模擬成一 環 接一 環 的鏈條,這裡每一 環 視作乙個結點,結點串在一起形成鍊錶。這種資料結構非常靈活,結點數目無須事先指定,可以臨時生成。每個結點有自己的儲存空間,結點間的儲存空間也無需連線,結點之間的串連由指標來完成,指標的操作又極為靈活方便,無須移動大批資料,只需修改...

鍊錶(LinkList) 單鏈表

一 鍊錶的基本概念 鍊錶是一種物理上不連續 非順序的儲存結構,資料元素之間通過指標關聯在一起。鍊錶的特點 1 空間開銷大 物理空間不連續 2 可以動態新增新的節點 3 查詢元素只能按順序查詢 二 單向鍊錶圖示 節點 class node 鍊錶 class linklist linklist void...