数据结构与算法 问题集

 #返回上一级

@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等

 

 #返回上一级

数据结构与算法 问题集

上一篇:Go语言最佳实践—— 字符串


下一篇:自己读c