-
程式比較長,明天早上我會發到你們的郵箱,請大家注意查收。
-
編寫鍊表演算法的基礎是熟悉幾種常見的鍊表結構,然後注意以下編寫鍊表的技巧,再加上大量的練習,就可以非常快速且高質量地編寫鍊表。 提示如下:
1.充分理解指標或引號的含義
將變數賦值給指標,其實就是將變數的位址賦給指標,反之,指標儲存變數的記憶體位址,指向變數,就可以通過指標找到變數。
以單鏈表插入為例,當我們插入乙個新節點時,必須首先將新插入的節點與插入位置後面的節點連線起來,然後再將新插入的節點與上乙個節點連線起來。 同理,刪除也是要注意這個問題,先把刪除的節點後面的節點連線起來。
3. 使用虛擬節點,簡化實現難度
對於鍊表的插入和刪除,需要對第乙個節點的插入和最後乙個節點的刪除進行特殊處理,因此需要乙個虛擬節點來解決這個問題。
虛擬節點是不參與業務邏輯,不儲存業務資料的節點,一般作為鍊表的頭節點,任何時候,無論鍊表是否為空,頭指標都會指向這個虛擬頭節點。
4、注意邊界條件的處理
在寫**的時候,要注意邊界條件的問題,可能會造成bug,檢查鍊表的邊界條件如下:
1)如果鍊表是空的,**能正常工作嗎?
2)如果鍊表只包含乙個節點,**會正常工作嗎?
3)如果鍊表只包含兩個節點,**會正常工作嗎?
4) 在處理頭節點和尾節點時,邏輯是否正常工作?
寫完後除了考慮在正常情況下是否能正常工作外,還需要考慮在以上4種情況下是否能正常工作。
5.畫插圖來幫助你思考
對於鍊表的操作,指標的操作很厚,總會讓人感到很頭暈目眩,所以我們可以用例項和繪圖方法把問題具體化,畫在紙上,然後怎麼操作,這樣就很清楚了。
6.多寫多練習,沒有捷徑可走
乙個問題的練習水平是多少,也就是說,當你提到這個問題時,你可以想出最關鍵的部分,僅此而已。
以上都是!
5,6,7,8,9,0,1,2,3,4。只要仔細看一下這個函式,它只不過是乙個交換函式,先是 0-3 交換,然後是 4-9,最後是 0-9,。