Remove all elements from a linked list of integers that have value val.
Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –> 5
s思路: 1. 操作鏈表,要?jiǎng)h除數(shù)。首先想想鏈表的邊界是什么?左邊是頭節(jié)點(diǎn),是邊界,右邊是為節(jié)點(diǎn)也是邊界。如果要?jiǎng)h除的節(jié)點(diǎn)恰好是頭節(jié)點(diǎn),就要考慮頭指針改變的問題。因此用dummy或pointer-to-pointer。 2. 用dummy:首先需要新建一個(gè)node,賦初值為0,然后需要一個(gè)dummy指針指向這個(gè)node。 3. 用pointer-to-pointer: 之前總結(jié)過(guò)指向指針的指針的兩種操作:第一種是只移動(dòng)指向指針的指針到新的位置,這個(gè)操作相當(dāng)于站位,放到需要的地方,不對(duì)鏈表產(chǎn)生改變;第二種操作是修改被指針指向的指針里的地址,讓指針指向新的節(jié)點(diǎn),這個(gè)操作會(huì)修改鏈表結(jié)構(gòu)!
以上,Operation 1表示移動(dòng)pointer-to-pointer指向不同節(jié)點(diǎn)的指針域,operation 2表示修改節(jié)點(diǎn)的指針域,讓指向新的node。這里最大的不同是,指針是低層次的,指向指針的指針是高層次的,更靈活,兩者不是一個(gè)級(jí)別的事物!如果鏈表操作中同時(shí)需要這兩個(gè)操作,就應(yīng)該考慮用pointer-to-pointer
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注