- CFree
版本 是 早期 上 传的完 整 版本 ,该版本 在 CFree这个IDE下 测试通 过。此版本 虽有瑕疵 ,但 不 会 再 维护,因 为新的 更新 会 在 下面 三个分支版本中呈现。 - Dev-C++
版本 是 指 在 Dev-C++这个IDE下 测试通 过的版本 。 - CLion
版本 是 指 在 CLion这个IDE下 测试通 过的版本 。 - VisualC++
版本 是 指 在 Microsoft Visual C++ 2010这个IDE下 测试通 过的版本 。
IDE
的 选择CFree
是 一个优秀的国产软件,麻雀 虽小五 脏俱全 ,非常 适合新手 使用 。不 过该产品早 已 停 更 ,在 win10上 有 些兼容 问题,需要 调教。Dev-C++
是 一 个开源 软件,同 CFree一样小巧实用。最 关键的 是 ,可 以兼容 win10,推荐使用 。CLion
需要 掌握 一 点 cmake知 识,对笔记本性能 要求 也略高 。不 过JetBrains系列 的 产品,功 能 优秀没 得 说,强烈 建 议尝试。Microsoft Visual C++
是 微 软出品 ,该系列 号 称 地表 最强 ,不 过复杂度也是很高,对于新手 并不友好 ,需要 耐 心 琢磨 。如果将来 不 是 走 C/C++/C#等 路 线,可 以先不 使用 。(注 :从2018年 开始,计算机 二 级C语言项目的 考 试中,已 将 VC++6换成了 Microsoft Visual C++ 2010。所以 如果有 考 级需求 的 同学 ,请自行 熟 悉该IDE)
习题
注 :
1. "CFree"是 完 整 版本 。"Dev-C++"/"CLion"/"VisualC++"是 新 增 的 版本 ,这三个版本最终会取代"CFree"版本 。
2. "CFree"版本 既 可 以用CFree直接 打 开,也支持 用 Dev-C++打 开,所以 当 使用 CFree遇 到 兼 容 问题时,可 尝试用 Dev-C++。
3. 上述 四个版的代码是同步更新的,但 是 各 版本 之 间相互 独立 ,没 有 任 何 依 赖关系 ,允 许单独 运行/测试。
4. 对所有 版本 的 代 码均未 充分 测试,尤 其是很多代 码没有 完成 的 边界检查(原因 是 此处以实现算法正 确性为目的 ,而较少考 虑程序 的 健 壮 性 ),所以 如有BUG请到Issues反 馈。
总的
- ★★★项目
工程 化 。 修 复一些已知 /潜在 的 BUG。- 简化
源 码之间的引用 关系,争 取 每 个模块都可 以单独 运行测试。 修 剪被引用 源 码中的 次 要 内容 ,使 得 焦点 更 聚集,重点 更 突出 。增加 注 释与帮助信 息 ,使 源 码展示 更 友好 。出自 教材 中 的 算法 ,会 尽 量 使 其代码与教材 一致 ,如有改 动,会 在 注 释中提示 。其它算法 会 视情形 书写,不 唯一 。修 改 部分 被 引入的 结构,这一点需要视不同题目的要求而定;大 多数 被 引入的 结构会 原 封 不 动地保留 下 来 。
- 开箱
即 用
将 源 码克隆 /下 载到本地 后 ,可 以查看 各 分 支 内的 README文 件 以获取帮助信 息
本内 容 仅限个人学 习使用 ,未 经作者 许可,不 得用 于商业用途 源 码仅供 参考 ,别抄作 业- 欢迎Star项目,并鼓励在Github
提 交Issues来 反 馈问题,在 博 客 上 发私信 未必 可 以及时看到
emoji | 简写标记 | ||
---|---|---|---|
(0) | 🎉 | :tada: |
|
(1) | 📝 | :memo: |
|
(2) | 💡 | 发布 |
:bulb: |
(3) | ♻️ | :recycle: |
|
(4) | ✏️ | :pencil2: |
|
(5) | 🐛 | :bug: |
Commitemoji
节 | 备注 | |||
---|---|---|---|---|
01 绪论 | Status | |||
02 线性 |
SqList | 顺序 |
2.3、2.4、2.5、2.6 | 线性 |
Union | A=A∪B | 2.1 | ||
MergeSqList | C=A+B | 2.2、2.7 | 归并顺序 |
|
LinkList | 链表 | 2.8、2.9、2.10、2.11 | 线性 |
|
MergeList | C=A+B | 2.12 | 归并链表 | |
SLinkList | 2.13、2.14、2.15、2.16 | |||
Difference | (A-B)∪(B-A) | 2.17 | ||
DuLinkList | 2.18、2.19 | |||
ELinkList | 扩展 |
2.20 | ||
MergeEList | C=A+B | 2.21 | 归并扩展 |
|
Polynomial | 2.22、2.23 | |||
03 栈和队列 | SqStack | 栈 | 顺序 |
|
Conversion | 进制转换 | 3.1 | 栈的应用 | |
LineEdit | 3.2 | 栈的应用 | ||
Maze | 迷宫寻路 | 3.3 | 栈的应用 | |
Expression | 3.4 | 栈的应用 | ||
Hanoi | 汉诺 |
3.5 | 递归 | |
LinkQueue | 链列 | 链式 |
||
SqQueue | 顺序队列 | 循环队列,顺序 |
||
BankQueuing | 3.6、3.7 | 队列 |
||
04 |
SString | 顺序 |
4.1、4.2、4.3、4.5 | 顺序 |
HString | 4.4 | 顺序 |
||
LString | 块链 |
顺序 |
||
KMP | KMP |
4.6、4.7、4.8 | ||
WordList | 关键词 |
4.9、4.10、4.11、4.12、4.13、4.14 | ||
05 |
Array | |||
TSMatrix | 5.1、5.2 | 三元组顺序表存储方式 | ||
RLSMatrix | 5.3 | |||
CrossList | 5.4 | 十字链表存储方式 | ||
GList-HT | 广义 |
5.5、5.6、5.7、5.8 | 头尾链表 |
|
GList-E | 广义 |
扩展线性链表 |
||
MPList | m |
链式 |
||
06 树和 |
SqBiTree | 二叉树顺序存储结构 | ||
BiTree | 二叉树的二叉链表存储结构 | 6.1、6.2、6.3、6.4 | ||
BiTriTree | 二叉树的三叉链表存储结构 | |||
BiThrTree | 线索 |
6.5、6.6、6.7 | ||
PTree | 树的 |
|||
CTree | 树的孩子链表(带双亲) |
|||
CSTree | 树的 |
|||
MFSet | 6.8、6.9、6.10、6.11 | |||
HuffmanTree | 赫夫曼树 | 6.12、6.13 | ||
PowerSet | 6.14/6.15 | |||
NQueens | N |
6.16 | ||
07 图 | MGraph | 图的邻接 |
7.1、7.2、7.4、7.5、7.6 | |
ALGraph | 图的邻接 |
|||
OLGraph | 图的十字链表存储 | 7.3 | ||
AMLGraph | 图的邻接 |
无向图、无向网 | ||
SpanningTree | 无向图的 |
7.7、7.8 | ||
StronglyConnectedComponents | Kosaraju |
|||
MinimumSpanningTree | 无向网的 |
7.9 | Prim |
|
ArticulationPoints | 无向图的关节 |
7.10、7.11 | ||
TopologicalSorting | AOV-网的 |
7.12 | ||
CriticalPathMethod | AOE-网的关键 |
7.13、7.14 | ||
ShortestPaths | 7.15、7.16 | Dijkstra |