剛完成了嚴蔚敏的資料結構——單鏈表的就地逆置習題(2.21)
解題時想到2種方案,特此總結一下:
方案1:
1遍歷單鏈表,並算出單鏈表的長度n。
2定位到節點ai,與節點an-i+1 (i = 1 to(n/2)+1)//也就是單鏈表的一半長度
交換各自的資料
i++
方案2:
1定位尾節點
2依次將節點插入到尾節點之後
3將頭節點的next指標,設定成尾節點 //原因是尾節點在就地逆置後,就變為首節點,自己在做的時候忘了這步。
可見尾節點在單鏈表的逆置過程中起到了關鍵性作用。
使得演算法的時間複雜度大大降低。
資料結構 單鏈表的就地逆置
6 1 帶頭結點的單鏈表就地逆置 10 分 本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse l linklist l 要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。v...
單鏈表就地逆置
思路為定義四個工作指標p back p q back q,然後先將p q從鍊錶中摘下,在分別在p back後和q back後插入。最後在重新定位工作指標。注意點 若先全部摘下,否則在中點相遇時p和q back會重疊,使得鍊錶斷開,所以當長度為偶數時到達中點的兩個節點時要跳出迴圈,另外直接交換兩者 迴...
單鏈表就地逆置
就地逆置鍊錶 分析 我們採用頭插法或者相鄰節點直接修改指向的方法來進行逆置。如下 struct link define crt secure no warnings include include void reverse link h h next pre 頭指標指向最後乙個節點 q next n...