@Author: 张海拔
@Update: 2014-01-12
@Link: http://www.cnblogs.com/zhanghaiba/p/3513330.html
【基础数据结构】
◇◇线型结构
◇◇◇◇线性表的插入、删除、查找
◇◇◇◇有序线性表的合并
◇◇◇◇线性表之静态表:整型数组
◇◇◇◇◇◇◇◇如何实现大整数的乘法?
◇◇◇◇◇◇◇◇二维数组的转置
◇◇◇◇线性表之静态表:字符数组(字符串)
◇◇◇◇◇◇◇◇字符串反转、旋转
◇◇◇◇◇◇◇◇字符串匹配问题与KMP算法
◇◇◇◇线性表之动态表:链表
◇◇◇◇◇◇◇◇链表的反转问题、环路问题
◇◇◇◇◇◇◇◇如何高效解决约瑟夫问题?
◇◇◇◇◇◇◇◇伪链表
◇◇◇◇栈
◇◇◇◇◇◇◇◇栈的数组实现和括号匹配的检查 link(public)
◇◇◇◇◇◇◇◇栈的链表实现
◇◇◇◇◇◇◇◇怎么实现Linux下的逆波兰计算器dc? 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)
◇◇◇◇◇◇◇◇怎样求出逆序对?
◇◇◇◇◇◇◇◇怎样提升大整数乘法的效率?
◇◇◇◇基数排序
◇◇◇◇链表的排序问题
◇◇◇◇排序的实际使用
◇◇图算法
◇◇◇◇DFS和BFS link(public)
◇◇◇◇单源最短路(Dijkstra算法) link(public)
◇◇◇◇拓扑排序 link(public)
◇◇◇◇最小生成树
◇◇搜索算法
◇◇◇◇状态搜索
◇◇◇◇◇◇◇◇倒水问题
◇◇◇◇◇◇◇◇八数码问题
◇◇◇◇剪枝优化
◇◇◇◇回溯法
◇◇◇◇◇◇◇◇全排列问题
◇◇◇◇◇◇◇◇八皇后问题
◇◇◇◇动态规划
◇◇◇◇◇◇◇◇最大连续和问题
◇◇◇◇◇◇◇◇最长路问题(滑雪)
◇◇◇◇◇◇◇◇无限背包和01背包问题
实现方案:
(1)实现语言:C、有些会再用Python实现(后期计划)。
(2)通用性:作为demo级别,通常只是举例简单内建数据类型,比较适合OJ刷题。
(3)工程性:前期可能不加入错误检查,后期考虑用assert(),一般是假定输入合法。
至于C语言中基本的模块封装方法(文件分离、extern和static的linkage)只能在函数接口组前面加注释public和private来模拟(提示)。
(4)代码风格:我一直比较喜欢Linux kernel Style,但略有不同。代码尽量做到自注释,我认为有必要的地方会有简单注释。
(5)读者定位:自己,以及数据结构和算好初级爱好者。
只有自己看得爽,才会经常翻阅,才会不断更新和完善,所以第一定位就是:写给自己看的。
第二定位就是写给与我水准差不多的同学参考,一般demo的说明部分不会做最基础的解释,而是尽量写一些自己的个人理解。
主要参考书籍:
《数据结构与算法设计》 王晓东
《算法竞赛入门经典》 刘汝佳
《The Algorithm Design Manual》(ADM) Steven S. Skiena
《Algorithm In C》Robert Sedgewick
《Introduction To Algorithrm》 (CLRS) Thomas.H.Cormen等