{"id":15036380,"url":"https://github.com/kangjianwei/data-structure","last_synced_at":"2025-05-15T03:04:45.203Z","repository":{"id":38264049,"uuid":"151720168","full_name":"kangjianwei/Data-Structure","owner":"kangjianwei","description":"《数据结构》-严蔚敏.吴伟民-教材源码与习题解析","archived":false,"fork":false,"pushed_at":"2022-07-20T15:01:38.000Z","size":21857,"stargazers_count":3686,"open_issues_count":11,"forks_count":982,"subscribers_count":69,"default_branch":"master","last_synced_at":"2025-05-15T03:03:44.193Z","etag":null,"topics":["algorithm","c","datastructure","study-notes"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kangjianwei.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-05T12:51:53.000Z","updated_at":"2025-05-14T00:53:31.000Z","dependencies_parsed_at":"2022-07-13T13:50:35.367Z","dependency_job_id":null,"html_url":"https://github.com/kangjianwei/Data-Structure","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kangjianwei%2FData-Structure","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kangjianwei%2FData-Structure/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kangjianwei%2FData-Structure/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kangjianwei%2FData-Structure/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kangjianwei","download_url":"https://codeload.github.com/kangjianwei/Data-Structure/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","c","datastructure","study-notes"],"created_at":"2024-09-24T20:30:58.887Z","updated_at":"2025-05-15T03:04:45.124Z","avatar_url":"https://github.com/kangjianwei.png","language":"C","readme":"# 《数据结构》课本源码与习题解析\n\n\n## 项目介绍\n\n本项目中的源码与教材《**数据结构-C语言版**》[严蔚敏,吴伟民版]以及《**数据结构题集-C语言版**》[严蔚敏,吴伟民,米宁版]配套。\n\n|           数据结构教材           |           数据结构题集           |\n| :----------------------------: | :----------------------------: |\n| ![数据结构教材](数据结构教材.png) | ![数据结构题集](数据结构题集.png) |\n\n\n## 项目结构\n\n本项目包含了**教材源码**跟**习题源码**，并分为4个版本，分别是：**CFree**、**Dev-C++**、**CLion**、**VisualC++**，其中：    \n\n- **CFree** 版本是**早期**上传的完整版本，该版本在CFree这个IDE下测试通过。**此版本虽有瑕疵，但不会再实时维护**，因为新的更新会在下面三个分支版本中呈现。    \n- **Dev-C++** 版本是指在Dev-C++这个IDE下测试通过的版本。    \n- **CLion** 版本是指在CLion这个IDE下测试通过的版本。    \n- **VisualC++** 版本是指在Microsoft Visual C++ 2010这个IDE下测试通过的版本。    \n\n\u003e IDE的选择    \n\u003e\u003e CFree是一个优秀的国产软件，麻雀虽小五脏俱全，非常适合新手使用。不过该产品早已停更，在win10上有些兼容问题，需要调教。    \n\u003e    \n\u003e\u003e Dev-C++是一个开源软件，同CFree一样小巧实用。最关键的是，可以兼容win10，推荐使用。    \n\u003e    \n\u003e\u003e CLion需要掌握一点cmake知识，对笔记本性能要求也略高。不过JetBrains系列的产品，功能优秀没得说，强烈建议尝试。    \n\u003e    \n\u003e\u003e Microsoft Visual C++是微软出品，该系列号称地表最强，不过复杂度也是很高，对于新手并不友好，需要耐心琢磨。如果将来不是走C/C++/C#等路线，可以先不使用。（注：从2018年开始，计算机二级C语言项目的考试中，已将VC++6换成了Microsoft Visual C++ 2010。所以如果有考级需求的同学，请自行熟悉该IDE）    \n\n**习题解析**中存储了《数据结构题集》中非代码题的解析，对于需要写代码解决的问题，参见 **Dev-C++**、**CLion**、**VisualC++** 这三个版本中的源码。    \n\n```\n注：\n1. \"CFree\"是完整版本。\"Dev-C++\"/\"CLion\"/\"VisualC++\"是新增的版本，这三个版本最终会取代\"CFree\"版本。    \n2. \"CFree\"版本既可以用CFree直接打开，也支持用Dev-C++打开，所以当使用CFree遇到兼容问题时，可尝试用Dev-C++。    \n3. 上述四个版的代码是同步更新的，但是各版本之间相互独立，没有任何依赖关系，允许单独运行/测试。    \n4. 对所有版本的代码均未充分测试，尤其是很多代码没有完成的边界检查(原因是此处以实现算法正确性为目的，而较少考虑程序的健壮性)，所以如有BUG请到Issues反馈。    \n```\n\n\n## 更新目标\n\n总的目标是保障正确性，提高可读性，降低学习难度，具体来说包含以下几点：    \n\n1. ★★★项目工程化。    \n2. 修复一些已知/潜在的BUG。    \n3. 简化源码之间的引用关系，争取每个模块都可以单独运行测试。    \n4. 修剪被引用源码中的次要内容，使得焦点更聚集，重点更突出。    \n5. 增加注释与帮助信息，使源码展示更友好。    \n6. 出自教材中的算法，会尽量使其代码与教材一致，如有改动，会在注释中提示。其它算法会视情形书写，不唯一。    \n7. 修改部分被引入的结构，这一点需要视不同题目的要求而定；大多数被引入的结构会原封不动地保留下来。\n\n## 使用方式\n\n*   开箱即用    \n\n\u003e 将源码克隆/下载到本地后，可以查看各分支内的 **README** 文件以获取帮助信息    \n\n## 注意事项\n\n1. **本内容仅限个人学习使用，未经作者许可，不得用于商业用途**    \n2. **源码仅供参考，别抄作业**    \n3. **欢迎Star项目，并鼓励在Github提交[Issues](https://github.com/kangjianwei/Data-Structure/issues)来反馈问题，在博客上发私信未必可以及时看到**    \n![github](Star.png)\n\n\n## Commit图例\n\n| 序号 |   emoji   |               在本项目中的含义               |   简写标记   |\n| ---- | --------- | ------------------------------------------- | ----------- |\n| (0) | :tada:    | 初始化项目                                   | `:tada:`    |\n| (1) | :memo:    | 更新文档，包括但不限于README                  | `:memo:`    |\n| (2) | :bulb:    | 发布新的源码                                 | `:bulb:`    |\n| (3) | :recycle: | 重构，主要指修改已有的源码与注释               | `:recycle:` |\n| (4) | :pencil2: | 校对，主要指更正错别字、修改源码排版、更新注释等 | `:pencil2:` |\n| (5) | :bug:     | 修复代码中的BUG                              | `:bug:`     |\n\n\n## 相关链接\n\n[个人博客](http://www.cnblogs.com/kangjianwei101)     \n\n\n## 脚注\n\nCommit信息中的`emoji`参考来源：    \n\n* [Full Emoji List](https://unicode.org/emoji/charts/full-emoji-list.html)   \n* [gitmoji](https://gitmoji.carloscuesta.me/)    \n\n\n## 附：教材源码目录\n\n| 章             | 节                          | 内容                                | 包含算法                          | 备注                         |\n| :------------- | :-------------------------- | :--------------------------------- | :------------------------------- | :-------------------------- |\n| 01 绪论        | Status                      |                                    |                                  | 定义一些共享常量和函数        |\n| 02 线性表      | SqList                      | 顺序表                             | 2.3、2.4、2.5、2.6                | 线性表的顺序存储结构          |\n|                | Union                       | A=A∪B                              | 2.1                              |                             |\n|                | MergeSqList                 | C=A+B                              | 2.2、2.7                         | 归并顺序表                   |\n|                | LinkList                    | 链表                                | 2.8、2.9、2.10、2.11              | 线性表的链式存储结构          |\n|                | MergeList                   | C=A+B                              | 2.12                             | 归并链表                     |\n|                | SLinkList                   | 静态链表                            | 2.13、2.14、2.15、2.16            |                             |\n|                | Difference                  | (A-B)∪(B-A)                        | 2.17                             |                             |\n|                | DuLinkList                  | 双向循环链表                        | 2.18、2.19                       |                             |\n|                | ELinkList                   | 扩展的线性链表                      | 2.20                             |                             |\n|                | MergeEList                  | C=A+B                              | 2.21                             | 归并扩展的线性链表            |\n|                | Polynomial                  | 一元多项式                          | 2.22、2.23                       |                             |\n| 03 栈和队列     | SqStack                     | 栈                                  |                                  | 顺序存储结构                 |\n|                | Conversion                  | 进制转换                            | 3.1                              | 栈的应用                     |\n|                | LineEdit                    | 行编辑程序                          | 3.2                              | 栈的应用                     |\n|                | Maze                        | 迷宫寻路                            | 3.3                              | 栈的应用                     |\n|                | Expression                  | 表达式求值                          | 3.4                              | 栈的应用                     |\n|                | Hanoi                       | 汉诺塔                             | 3.5                              | 递归                         |\n|                | LinkQueue                   | 链列                                |                                  | 链式存储结构                 |\n|                | SqQueue                     | 顺序队列                            |                                  | 循环队列，顺序存储结构        |\n|                | BankQueuing                 | 模拟银行排队                        | 3.6、3.7                         | 队列的应用                   |\n| 04 串          | SString                     | 顺序串                             | 4.1、4.2、4.3、4.5                | 顺序存储                     |\n|                | HString                     | 堆串                                | 4.4                              | 顺序存储，动态分配内存        |\n|                | LString                     | 块链串                             |                                  | 顺序存储+链式存储             |\n|                | KMP                         | KMP算法                             | 4.6、4.7、4.8                    | 字符串匹配算法               |\n|                | WordList                    | 关键词索引                          | 4.9、4.10、4.11、4.12、4.13、4.14 | 堆串和线性表的应用            |\n| 05 数组和广义表 | Array                       | 多维数组                            |                                  |                             |\n|                | TSMatrix                    | 稀疏矩阵                            | 5.1、5.2                         | 三元组顺序表存储方式          |\n|                | RLSMatrix                   | 稀疏矩阵                            | 5.3                              | 行逻辑链接的顺序表存储方式     |\n|                | CrossList                   | 稀疏矩阵                            | 5.4                              | 十字链表存储方式              |\n|                | GList-HT                    | 广义表                             | 5.5、5.6、5.7、5.8                | 头尾链表存储表示              |\n|                | GList-E                     | 广义表                             |                                  | 扩展线性链表存储表示          |\n|                | MPList                      | m元多项式                           |                                  | 链式存储                     |\n| 06 树和二叉树   | SqBiTree                    | 二叉树顺序存储结构                  |                                  |                             |\n|                | BiTree                      | 二叉树的二叉链表存储结构             | 6.1、6.2、6.3、6.4                |                             |\n|                | BiTriTree                   | 二叉树的三叉链表存储结构             |                                  |                             |\n|                | BiThrTree                   | 线索二叉树                          | 6.5、6.6、6.7                    |                             |\n|                | PTree                       | 树的双亲表存储表示                  |                                  |                             |\n|                | CTree                       | 树的孩子链表(带双亲)的存储表示       |                                  |                             |\n|                | CSTree                      | 树的二叉链表（孩子-兄弟）结构存储表示 |                                  |                             |\n|                | MFSet                       | 集合                                | 6.8、6.9、6.10、6.11              |                             |\n|                | HuffmanTree                 | 赫夫曼树                            | 6.12、6.13                       | 又称\"哈夫曼树\"               |\n|                | PowerSet                    | 冪集                                | 6.14/6.15                        |                             |\n|                | NQueens                     | N皇后问题                           | 6.16                             |                             |\n| 07 图          | MGraph                      | 图的邻接矩阵存储                    | 7.1、7.2、7.4、7.5、7.6           | 有向图、有向网、无向图、无向网 |\n|                | ALGraph                     | 图的邻接表存储                      |                                  | 有向图、有向网、无向图、无向网 |\n|                | OLGraph                     | 图的十字链表存储                    | 7.3                              | 有向图、有向网、无向图、无向网 |\n|                | AMLGraph                    | 图的邻接多重表存储                  |                                  | 无向图、无向网               |\n|                | SpanningTree                | 无向图的生成树                      | 7.7、7.8                         | 深度优先生成树               |\n|                | StronglyConnectedComponents | 有向图强连通分量                    |                                  | Kosaraju算法和Tarjan算法     |\n|                | MinimumSpanningTree         | 无向网的最小生成树                  | 7.9                              | Prim算法和Kruskal算法        |\n|                | ArticulationPoints          | 无向图的关节点                      | 7.10、7.11                       |                             |\n|                | TopologicalSorting          | AOV-网的拓扑排序                    | 7.12                             | 有向图                       |\n|                | CriticalPathMethod          | AOE-网的关键路径                    | 7.13、7.14                       | 有向网                       |\n|                | ShortestPaths               | 最短路径算法                        | 7.15、7.16                       | Dijkstra算法和Floyd算法      |\n| 08 动态存储管理 | BoundaryTagMethod           | 边界标识法                          | 8.1                              |                              |\n|                | BuddySystem                 | 伙伴系统                            | 8.2                              |                              |\n|                | GarbageCollection           | 无用单元收集                        | 8.3                              | 无栈遍历广义表                |\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkangjianwei%2Fdata-structure","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkangjianwei%2Fdata-structure","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkangjianwei%2Fdata-structure/lists"}