上週給前端的小夥伴們進行了講課,想著總結一下,但是直到推到現在,我才開始。上週講課的內容是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...