前言
其實鏈表的心法就是“指針的操作”
單鏈表
單鏈表的結點包括:data(數(shù)據(jù))、next指針
next指針就是指向下一個結點
最后一個結點的next指針指向nil
展示的語言是oc排拷,是面向對象的暖庄,那么結點應該就是一個類菇晃,然后這個類包括data和next這兩個屬性潘酗;如果是面向過程的語言淳梦,如c語言艾船,那么結點應該就是一個結構體
結點包含data顶籽,next玩般,那么單鏈表這個類應該具備兩個基本屬性頭結點和尾結點
接下來,講一下鏈表的操作
- 創(chuàng)建空表
new一個鏈表類礼饱,頭結點和尾結點指向nil -
插入元素
中間插入元素
尾部插入節(jié)點 -
刪除元素
刪除元素 -
遍歷單鏈表
遍歷單鏈表 - 查找節(jié)點
查找節(jié)點3
ok坏为?從以上幾個基本的操作,應該可以看得出來镊绪,其實就是對next指針的操作匀伏,無論是插入還是刪除,都是改變next指針的指向镰吆,然后查找的帘撰,遍歷的,主要是靠頭結點來遍歷万皿,然后頭結點的移動head = head.next
其實主要也是靠next指針
接下來摧找,繼續(xù)講雙鏈表
雙鏈表
上面講到的單鏈表是單一指向的核行,就是只有一個方向,如
A -> B -> C -> D
接下來的雙鏈表蹬耘,就是雙向的
A <--> B <--> C <--> D
這句補充一點芝雪,對于鏈表有一個知識點一個要記住,就是結點的組成综苔,比如單鏈表的結點有data和next
那么雙鏈表的結點會有一個前驅指針和后驅指針和data