/C_Practice

数据结构与算法分析(C语言描述)习题练习

Primary LanguageC

目录

简述

数据结构与算法分析(C语言描述)习题练习,是传说中的黑皮书。

几乎大部分习题都做了,但是很难的和一些经典问题没有做,比如第十章中的N皇后问题之类,书中也只是在习题提了一嘴罢了。

完成进度

  • 第一章
  • 第二章
  • 第三章
  • 第四章
  • 第五章
  • 第六章
  • 第七章
  • 第八章
  • 第九章
  • 第十章
  • 第十一章
  • 第十二章

注意事项

  1. 斐波那契堆无法在VS中构建编译.
  2. 还有一些习题的程序我没有标出来,需要自己找。
  3. 练习时为避免命名冲突,使用了大量的static关键字,还有命名方式是有点不伦不类的。

索引(英文对应函数名)

第一章

  1. 第一章选择问题
  2. 解字谜
  3. 使用I/O的PrintfOut函数输出任意实数
  4. 文件处理

第二章

  1. N个自然数随机置换
  2. 判断素数
  3. 非递归求幂(Pow)
  4. 摩尔投票
  5. 对分查找
  6. 最大子序列和

第三章

  1. 打印链表(PrintNode)
  2. 打印链表特定元素(PrintLots)
  3. 单双链表交换元素
  4. 链表交集
  5. 链表并集
  6. 多项式相加(Addition)
  7. 多项式相乘(Multiply)
  8. 多项式求幂(Power)
  9. 任意精度整数运算包
  10. Josephus问题
  11. 寻找单链表特定元素
  12. 反转单链表
  13. 桶排序
  14. 链表实现邻接表
  15. 游标实现邻接表
  16. 自调整表
  17. 删除重复元素
  18. 链表懒惰删除
  19. 检测平衡符号
  20. 后缀计算值
  21. 中缀转后缀含幂操作(InfixToPostfix)
  22. 后缀转中缀含幂操作(PostfixToInfix)
  23. 一个数组实现两个栈
  24. 链表实现队列
  25. 数组实现队列
  26. 双端队列

第四章

  1. 二叉树
  2. 游标实现二叉树
  3. 二叉树删除四种方法(DeleteLeft、DeleteRight、AlternateDelete、RandomDelete)
  4. AVL树
  5. AVL树非递归插入(AvlInsertNoRecursion)
  6. AVL树双旋转(DoubleRoateLeft、DoubleRoateRight)
  7. 计算二叉树节点个数(CountNodes)
  8. 计算二叉树树叶个数(CountLeaves)
  9. 计算二叉树满节点个数(CountFull)
  10. 随机生成二叉树(MakeBinaryRandomTree)
  11. 最小AVL树生成(MinAvlTree)
  12. 最小完美AVL树生成(MinGenTree)
  13. 二叉树范围打印(BinaryPrintRange)
  14. 计算二叉树坐标(Coordinates)
  15. 层序遍历(printTree2)
  16. B树
  17. 遍历基本树(BTreeTraverse)
  18. 判断两颗树相似(BinarySimilar)
  19. 线索树
  20. k(2)-d树

第五章

  1. 线性探测(FindLinear)
  2. 平方探测(FindSquare)
  3. 双散列插入(FindDoubleHash)

第六章

  1. 二叉堆
  2. 左式堆
  3. 斜堆

第七章

  1. 选择算法(QSelect)
  2. 希尔排序(ShellSort含Hibbard、Knuth、Gonnet、Sedgewick序列)
  3. 三值快速排序(QuickSort)
  4. 插入排序(InsertSort)
  5. 堆排序(HeapSort)
  6. 归并排序(MergeSort)

第八章

  1. 一般合并(DisjSet_Union)
  2. 按大小求并(DisjSet_Union_Size)
  3. 按高度合并(DisjSet_Union_Height)
  4. 一般寻找(DisjSet_Find)
  5. 一般路径压缩寻找(DisjSet_Find_Path)
  6. 按秩大小路径压缩寻找(DisjSet_Find_Path_Halving)

第九章

  1. 拓扑排序(Topological_Sort)
  2. 单发点最短路径问题(Dijkstra)
  3. Kruskal算法(Kruskal)
  4. 欧拉回路(Find_EulerCircuit)
  5. 强连通分量(Trjan)

第十章

  1. 文件压缩(File_Compress)
  2. 文件解压缩(File_Uncompress)
  3. 下项合适算法(NextFit)
  4. 首次合适算法(FirstFit)
  5. 最佳合适算法(BestFit)
  6. 首次合适递减算法(FirstFit_Decreasing)
  7. 最佳合适递减算法(BestFit_Decreasing)
  8. 最坏合适算法(WorstFit)
  9. 最近点对算法(Closest_Point)
  10. 快速选择(QSelect)
  11. 五分中项抽样算法(Median5)
  12. 三分中项抽样算法(Median3)
  13. 找矩阵最优顺序(OpyMatrix)
  14. 寻找最短路径(Dijkstra)
  15. 跳跃表(Skiplist)
  16. 收费公路重建算法(turnPike)
  17. 三连游戏棋(GameStart)
  18. α和β裁剪(FindComp(Human)Move)

第十一章

  1. 斐波那契堆(FibHeap)

第十二章

  1. 红黑树(RBTree)
  2. 1-2-3确定性跳跃表(_123_Skiplist)
  3. treap堆(treap)
  4. 配对堆(PairingHeap)

参考

  1. YinWenAtBIT/Data-Structure
  2. erkekin/Kruskal
  3. 参考文章总集