数据结构与算法分析(C语言描述)习题练习,是传说中的黑皮书。
几乎大部分习题都做了,但是很难的和一些经典问题没有做,比如第十章中的N皇后问题之类,书中也只是在习题提了一嘴罢了。
- 第一章
- 第二章
- 第三章
- 第四章
- 第五章
- 第六章
- 第七章
- 第八章
- 第九章
- 第十章
- 第十一章
- 第十二章
- 斐波那契堆无法在VS中构建编译.
- 还有一些习题的程序我没有标出来,需要自己找。
- 练习时为避免命名冲突,使用了大量的static关键字,还有命名方式是有点不伦不类的。
- 打印链表(PrintNode)
- 打印链表特定元素(PrintLots)
- 单双链表交换元素
- 链表交集
- 链表并集
- 多项式相加(Addition)
- 多项式相乘(Multiply)
- 多项式求幂(Power)
- 任意精度整数运算包
- Josephus问题
- 寻找单链表特定元素
- 反转单链表
- 桶排序
- 链表实现邻接表
- 游标实现邻接表
- 自调整表
- 删除重复元素
- 链表懒惰删除
- 检测平衡符号
- 后缀计算值
- 中缀转后缀含幂操作(InfixToPostfix)
- 后缀转中缀含幂操作(PostfixToInfix)
- 一个数组实现两个栈
- 链表实现队列
- 数组实现队列
- 双端队列
- 二叉树
- 游标实现二叉树
- 二叉树删除四种方法(DeleteLeft、DeleteRight、AlternateDelete、RandomDelete)
- AVL树
- AVL树非递归插入(AvlInsertNoRecursion)
- AVL树双旋转(DoubleRoateLeft、DoubleRoateRight)
- 计算二叉树节点个数(CountNodes)
- 计算二叉树树叶个数(CountLeaves)
- 计算二叉树满节点个数(CountFull)
- 随机生成二叉树(MakeBinaryRandomTree)
- 最小AVL树生成(MinAvlTree)
- 最小完美AVL树生成(MinGenTree)
- 二叉树范围打印(BinaryPrintRange)
- 计算二叉树坐标(Coordinates)
- 层序遍历(printTree2)
- B树
- 遍历基本树(BTreeTraverse)
- 判断两颗树相似(BinarySimilar)
- 线索树
- k(2)-d树
- 选择算法(QSelect)
- 希尔排序(ShellSort含Hibbard、Knuth、Gonnet、Sedgewick序列)
- 三值快速排序(QuickSort)
- 插入排序(InsertSort)
- 堆排序(HeapSort)
- 归并排序(MergeSort)
- 一般合并(DisjSet_Union)
- 按大小求并(DisjSet_Union_Size)
- 按高度合并(DisjSet_Union_Height)
- 一般寻找(DisjSet_Find)
- 一般路径压缩寻找(DisjSet_Find_Path)
- 按秩大小路径压缩寻找(DisjSet_Find_Path_Halving)
- 文件压缩(File_Compress)
- 文件解压缩(File_Uncompress)
- 下项合适算法(NextFit)
- 首次合适算法(FirstFit)
- 最佳合适算法(BestFit)
- 首次合适递减算法(FirstFit_Decreasing)
- 最佳合适递减算法(BestFit_Decreasing)
- 最坏合适算法(WorstFit)
- 最近点对算法(Closest_Point)
- 快速选择(QSelect)
- 五分中项抽样算法(Median5)
- 三分中项抽样算法(Median3)
- 找矩阵最优顺序(OpyMatrix)
- 寻找最短路径(Dijkstra)
- 跳跃表(Skiplist)
- 收费公路重建算法(turnPike)
- 三连游戏棋(GameStart)
- α和β裁剪(FindComp(Human)Move)