演算法實驗室 17 單鏈錶兩兩翻轉

2021-10-10 11:01:51 字數 922 閱讀 9631

我們希望給你一組鍊錶

1,2,3,4,5

然後讓你翻轉

2,1,4,3,5

這也是乙個演算法問題,那麼對於這種演算法至少需要三個指標

cache:存放第三個節點

begin:當前鏈對的第乙個節點

end:當前鏈隊的第二個節點

基本思想很簡單:

public static listnode reverse(listnode head)else 

while (end != null&&end.next!= null)

return renode;

}

but...

很明顯,這樣的邏輯還存在乙個很嚴重的漏洞

當這個鍊錶只存在兩個時,是成立的,

但是每當存在四個時,我們將兩個作為一對,那麼,當我們對第二對發生交換時,第二對的end變成了begin,然而!!來自第一對的末位元素指向的卻是已經變成了「end」的begin!!

所以,翻轉一定會出錯!

那麼解決辦法就非常簡單了,我們需要引入第四個指標pairtail,用來指向交換之後的「begin」的end

public static listnode reverse(listnode head)else 

while (end != null&&end.next!= null)

pairtail = begin;

//跳到下一對

begin = cache;

end = cache.next;

}return renode;

}

C 筆試題之實現單鏈錶兩兩反轉(置換)

兩兩反轉單鏈表就是把每兩個數反轉一次。如 a b c d e f兩兩反轉後變為 b a d c f e。具體 如下 include using namespace std struct node void display node head 列印鍊錶 else cout endl node reve...

實驗心得 喜報 實驗室研會獲兩項校級榮譽

在剛剛結束的武漢大學第十一屆 我心目中的好導師 第十五屆學術科技節系列活動中,實驗室研會積極組織同學參與,榮獲武漢大學第十一屆 我心目中的好導師 系列活動優秀組織單位 武漢大學2020年研究生學術科技活動優秀組織單位榮譽稱號!2020年,實驗室研會積極營造濃郁的學術氛圍,克服疫情帶來的影響,線上線下...

微軟推出HTML5實驗室站點及兩項原型技術

微軟互操作策略部門推出了html5實驗室站點 html5labs.interoperabilitybridges.com 將分享那些未被w3c或其他標準組織最終敲定的,早期的html5規範 原型技術 該部門總經理jean paoli今天宣布了此站點。同時微軟也發布了兩項原型技術 雙向通訊頻道簡化技術...