排序
冒泡排序-比較交換
快速排序-劃分-比較交換-遞歸
選擇排序-選擇-比較交換
查找
二分查找
二叉樹
二叉樹的前序、中序、後序遍歷(遞歸實現)
二叉樹的前序、中序、後序遍歷(非遞歸實現)
判斷一棵樹是否爲二叉平衡樹
鏈表
鏈表的翻轉
判斷鏈表是否有環?若有環,則求該環的長度?並求其連接點?
- 鏈表是否有環
一個快指針(走2步),一個慢指針(走1步),都從頭開始:
若有環則它們相撞(設碰撞點爲x);
若無環則快指針遇到空則跳出循環;
- 求鏈表環的長度
從碰撞點x開始,又走(一個走一步,一個走兩步),當再次碰撞時,它們走的次數爲環的長度
- 求連接點
記住結論:碰撞點到連接點的距離等於頭結點到連接點的距離。兩個指針(都一次一步),一個從頭走,一個從碰撞點走,第一次碰撞的節點就是連接點
如何快速查找鏈表的中間節點?(只遍歷一次)
建立兩個指針,一個指針一次遍歷一個節點,一個指針一次遍歷兩個節點,當快指針遍歷到空節點時,慢指針指向的位置即爲鏈表的中間位置