#返回上一級
html
@Author: 張海拔算法
@Update: 2014-6-1數組
@Link: http://www.cnblogs.com/zhanghaiba/p/3513330.html數據結構
【基礎數據結構】函數
◇◇線型結構學習
◇◇◇◇線性表之靜態表(基於數組和靜態分配空間)優化
◇◇◇◇◇◇◇◇靜態表之整型數組的插入、刪除、查找 link(public)編碼
◇◇◇◇◇◇◇◇有序數組的合併 link(public)spa
◇◇◇◇◇◇◇◇用數組模擬約瑟夫問題 link(public)設計
◇◇◇◇◇◇◇◇怎樣實現大整數的乘法?(指定規模)
◇◇◇◇◇◇◇◇怎樣實現動態數組?(任意規模)
◇◇◇◇◇◇◇◇二維數組的轉置
◇◇◇◇◇◇◇◇靜態表之字符數組(字符串)的字符統計
◇◇◇◇◇◇◇◇字符串反轉、旋轉
◇◇◇◇◇◇◇◇字符串匹配問題與KMP算法
◇◇◇◇◇◇◇◇怎樣實現一個strstr()?
◇◇◇◇線性表之動態表(基於指針和動態分配空間)
◇◇◇◇◇◇◇◇單鏈表的建立、插入、刪除、查找 link(public)
◇◇◇◇◇◇◇◇怎樣就地反轉單鏈表? link(public)
◇◇◇◇◇◇◇◇有序單鏈表的合併 link(public)
◇◇◇◇◇◇◇◇怎樣判斷單鏈表是否存在環路?
◇◇◇◇◇◇◇◇怎樣肯定鏈表中倒數第k個節點?
◇◇◇◇◇◇◇◇怎樣高效地解決約瑟夫問題?
◇◇◇◇◇◇◇◇雙鏈表
◇◇◇◇◇◇◇◇僞鏈表
◇◇◇◇◇◇◇◇#數組和鏈表我的總結 link(private)
◇◇◇◇棧
◇◇◇◇◇◇◇◇棧的數組實現和括號匹配的檢查 link(public)
◇◇◇◇◇◇◇◇棧的鏈表實現
◇◇◇◇◇◇◇◇怎麼實現Linux下的逆波蘭計算器dc? link(public)
◇◇◇◇隊列
◇◇◇◇◇◇◇◇怎樣用兩個棧模擬一個隊列?
◇◇◇◇◇◇◇◇怎樣實現實現優先隊列?
◇◇樹型結構
◇◇◇◇二叉樹
◇◇◇◇◇◇◇◇二叉樹的幾種建立方法 link(public)
◇◇◇◇◇◇◇◇由遍歷序列建立二叉樹 link(public)
◇◇◇◇◇◇◇◇二叉樹四種遍歷方法
◇◇◇◇◇◇◇◇二叉樹前序中序和後序遍歷的非遞歸實現
◇◇◇◇◇◇◇◇怎樣優化二叉樹的遍歷?
◇◇◇◇◇◇◇◇怎樣求二叉樹的高度和寬度(非遞歸)?
◇◇◇◇◇◇◇◇怎樣求二叉樹節點間最遠距離(二叉樹「直徑」)?
◇◇◇◇◇◇◇◇怎樣求二叉樹指點倆節點的最近公共祖先?
◇◇◇◇◇◇◇◇二叉樹的旋轉操做和平衡判斷 link(public)
◇◇◇◇◇◇◇◇怎樣輸出二叉樹的全部路徑(按字典序)? link(public)
◇◇◇◇◇◇◇◇二叉樹全部路徑問題的應用(如最大權值路徑、權值爲K的路徑)?
◇◇◇◇哈夫曼樹(最優二叉樹)
◇◇◇◇◇◇◇◇哈夫曼樹的建立
◇◇◇◇◇◇◇◇哈夫曼樹的編碼與解碼
◇◇◇◇◇◇◇◇怎樣製做一個文本文件壓縮軟件?
◇◇圖型結構
◇◇◇◇鄰接矩陣
◇◇◇◇鄰接表 link(public)
◇◇◇◇◇◇◇◇鄰接表和鄰接矩陣的相互轉換 link(public)
◇◇集合結構(主要用於動態操做)
◇◇◇◇堆
◇◇◇◇二叉排序樹(二叉搜索樹、二叉查找樹)
◇◇◇◇◇◇◇◇二叉排序樹刪除、搜索、插入的遞歸實現 link(public)
◇◇◇◇◇◇◇◇二叉排序樹刪除、搜索、插入的迭代實現 link(public)
◇◇◇◇◇◇◇◇怎樣把二叉排序樹轉換爲有序雙鏈表
◇◇◇◇◇◇◇◇排序二叉樹中求最近公共祖先
◇◇◇◇平衡二叉樹之AVL
◇◇◇◇◇◇◇◇AVL的遞歸實現
◇◇◇◇◇◇◇◇AVL的迭代實現
◇◇◇◇哈希表(散列表)
【高級數據結構】(實用)
◇◇◇◇並查集
◇◇◇◇線段樹
◇◇◇◇Tire樹(字典樹)
◇◇◇◇Tire圖和AC自動機
◇◇◇◇B樹
◇◇◇◇平衡二叉樹之紅黑樹
【經典算法】
◇◇查找算法(靜態)
◇◇◇◇直接查找
◇◇◇◇◇◇◇◇直接查找的優化實現
◇◇◇◇二分查找(有序靜態表)
◇◇◇◇◇◇◇◇如何實現sqrt()?
◇◇◇◇◇◇◇◇怎樣快速求冪?
◇◇排序算法(內部排序)
◇◇◇◇基本排序方法:冒泡排序、簡單選擇排序、直接插入排序 link(public)
◇◇◇◇快速排序 link(public)
◇◇◇◇◇◇◇◇怎樣快速求數組中第k大的數?
◇◇◇◇堆排序 link(public)
◇◇◇◇◇◇◇◇怎樣找出前k大的k個數(Top k 集合問題)?
◇◇◇◇希爾排序 link(public)
◇◇◇◇歸併排序 link(public)
◇◇◇◇◇◇◇◇怎樣求出逆序對數(Inverse Number)? link(public)
◇◇◇◇◇◇◇◇怎樣提高大整數乘法的效率?
◇◇◇◇基數排序
◇◇◇◇鏈表的排序
◇◇◇◇◇◇◇◇怎樣實現鏈表的歸併排序 link(public)
◇◇◇◇線性時間排序
◇◇◇◇◇◇◇◇位圖數據結構及其排序 link(public)
◇◇◇◇排序的實際使用
◇◇圖算法
◇◇◇◇DFS和BFS link(public)
◇◇◇◇單源最短路(Dijkstra算法) link(public)
◇◇◇◇拓撲排序 link(public)
◇◇◇◇最小生成樹
◇◇搜索算法
◇◇◇◇狀態搜索
◇◇◇◇◇◇◇◇倒水問題
◇◇◇◇◇◇◇◇八數碼問題
◇◇◇◇剪枝優化
◇◇◇◇回溯法
◇◇◇◇◇◇◇◇怎樣輸出可重集的全排列 link(public)
◇◇◇◇◇◇◇◇例題: 排列搜索 link(public)
◇◇◇◇◇◇◇◇八皇后問題
◇◇◇◇動態規劃
◇◇◇◇◇◇◇◇最大連續和問題
◇◇◇◇◇◇◇◇最長公共子序列
◇◇◇◇◇◇◇◇DAG的最長路問題(滑雪)
◇◇◇◇◇◇◇◇DAG的路徑計數問題
◇◇◇◇◇◇◇◇無限揹包和0/1揹包問題
◇◇◇◇啓發式搜索
◇◇◇◇◇◇◇◇A*算法
實現方案:
(1)實現語言:標準C、有些實現會再用Python寫(後期計劃)。
(2)通用性:做爲demo級別,一般只支持簡單內建數據類型,比較適合OJ刷題。
(3)工程性:前期大部分實現都不加入錯誤檢查,後期考慮用assert()或<setjmp.h>,通常假定輸入數據合法。
至於C語言中基本的模塊封裝方法(文件分離、extern和static的linkage)只能在函數接口組前面加註釋public和private來模擬(提示)。
儘可能設計好接口(函數原型),由於接口的設計關係到代碼的複用性。
(4)代碼風格:我一直比較喜歡Linux kernel Style,但略有不一樣。代碼儘可能作到自注釋,我認爲有必要的地方會有簡單註釋。
(5)讀者定位:本身,以及數據結構和算好初級愛好者。
由於只有本身看得爽,纔會常常翻閱,纔會不斷更新和完善,因此第必定位就是本身。
第二定位是給與我水準差很少的同窗,供參考及吐槽,因此通常demo附帶的說明部分不會作最基礎的解釋,而是儘可能寫一些本身的我的理解。
(6)下一目標:SGI STL問題集(所有C++實現 並對比和學習源碼)
主要參考書籍:(代碼均獨立實現,即便個別有參照也是本身理解後獨立敲出來)
《算法競賽入門經典》 劉汝佳
《Algorithm In C》(Part 1~4) Robert Sedgewick
《The Algorithm Design Manual》(ADM) Steven. S. Skiena
《Introduction To Algorithrm》 (CLRS) Thomas. H. Cormen等
#問題集維護策略技巧等 link(private)