# data-structures-algorithms **Repository Path**: Liangfactory/data-structures-algorithms ## Basic Information - **Project Name**: data-structures-algorithms - **Description**: 一个用 Java 记录「数据结构与算法」学习过程的个人仓库。 从经典数据结构的手写实现开始,逐步深入到算法设计与刷题总结。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-30 - **Last Updated**: 2026-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据结构与算法学习笔记(DataStructures-Algorithms) > 一个用 Java 记录「数据结构与算法」学习过程的个人仓库。 > 从经典数据结构的手写实现开始,逐步深入到算法设计与刷题总结。 ## 项目简介 本项目是作者学习「数据结构与算法」的练习仓库。目标是: - ✍️ **手写实现**常见数据结构与算法,理解底层原理,而不是只停留在 API 调用层面 - 🧪 **测试驱动**:每个实现都配套单元测试,用测试验证正确性 - 📝 **笔记沉淀**:记录每块知识点的思路、复杂度分析、易错点和心得体会 - 🚀 **循序渐进**:从基础数据结构 → 经典算法 → 刷题实战,形成完整的学习闭环 ## 当前状态 > ⏳ 处于起步阶段:工程脚手架已经搭好,数据结构与算法代码将陆续添加。 目前仓库包含: | 内容 | 状态 | | --- | --- | | Maven + Spring Boot 工程骨架 | ✅ 已完成 | | 应用入口类 `DataStructuresAlgorithmsApplication` | ✅ 已完成 | | 基础上下文测试 | ✅ 已完成 | | 学习代码目录骨架(`datastructures` / `algorithms`) | ✅ 已完成 | | 数据结构代码(链表、树、图…) | 🚧 待添加 | | 算法代码(排序、动态规划…) | 🚧 待添加 | ## 技术栈 | 组件 | 说明 | | --- | --- | | JDK | 17 | | 构建工具 | Maven(内置 Maven Wrapper,无需本地安装) | | 框架 | Spring Boot 4.1.1(作为工程脚手架) | | Web | Spring MVC(spring-boot-starter-webmvc) | | 安全 | Spring Security | | 数据库 | MySQL(mysql-connector-j,预留) | | 工具 | Lombok | | 测试 | JUnit 5 + Spring Boot Test | ## 目录结构 ### 当前结构 ``` DataStructures-Algorithms ├── pom.xml # Maven 依赖与构建配置 ├── mvnw / mvnw.cmd # Maven Wrapper └── src ├── main │ ├── java/com/girt │ │ └── DataStructuresAlgorithmsApplication.java # 应用入口 │ └── resources │ └── application.yaml # 应用配置 └── test/java/com/girt └── DataStructuresAlgorithmsApplicationTests.java # 上下文测试 ``` ### 学习代码结构 学习代码按「数据结构 / 算法」分层存放,与单元测试一一对应(目录已创建,代码待填充): ``` src/main/java/com/girt ├── datastructures # 数据结构 │ ├── linkedlist # 链表(单链表 / 双链表 / 环形链表…) │ ├── stackqueue # 栈与队列(含循环队列、双端队列…) │ ├── tree # 树(二叉树 / BST / 平衡树 / 堆…) │ ├── graph # 图(邻接矩阵 / 邻接表…) │ ├── hash # 哈希表(手写 HashMap…) │ └── ... └── algorithms # 算法 ├── sort # 排序(冒泡 / 快排 / 归并 / 堆排…) ├── search # 查找(二分查找 / 双指针…) ├── recursion # 递归与回溯 ├── dp # 动态规划 ├── greedy # 贪心 └── ... ``` ## 学习路线图 ### 一、数据结构 - [ ] **线性表**:数组、单链表、双链表、循环链表 - [ ] **栈与队列**:顺序栈、链栈、循环队列、双端队列、优先队列(堆) - [ ] **哈希表**:哈希函数、冲突解决(链地址法 / 开放定址)、手写 HashMap - [ ] **树**:二叉树遍历(前 / 中 / 后 / 层序)、二叉搜索树(BST)、平衡二叉树、堆(大 / 小顶堆)、并查集 - [ ] **图**:图的存储(邻接矩阵 / 邻接表)、遍历(DFS / BFS)、最短路径(Dijkstra / Floyd)、最小生成树(Prim / Kruskal) ### 二、算法 - [ ] **排序算法**:冒泡、选择、插入、希尔、归并、快排、堆排,以及复杂度对比 - [ ] **查找算法**:二分查找及其变体、双指针、滑动窗口 - [ ] **递归与回溯**:全排列、组合、N 皇后、子集等经典题目 - [ ] **动态规划**:背包问题、最长公共子序列、最长递增子序列、编辑距离 - [ ] **贪心算法**:区间调度、跳跃游戏等 - [ ] **字符串算法**:KMP、回文子串(Manacher)、Trie 树 ### 三、刷题实战 - [ ] LeetCode 经典题目分类刷题(按数据结构 / 算法专题) - [ ] 剑指 Offer 题解 - [ ] 大厂面试高频题整理 ## 如何运行 ### 运行测试(验证数据结构与算法的实现) ```bash # Windows mvnw.cmd test # macOS / Linux ./mvnw test ``` ### 启动应用 ```bash # Windows mvnw.cmd spring-boot:run # macOS / Linux ./mvnw spring-boot:run ``` > 提示:项目本身是一个「学习脚手架」,启动后暂不提供具体业务接口,主要价值在 `src/main/java` 下的学习代码与其单元测试。 ### 在 IntelliJ IDEA 中打开 直接以 Maven 项目方式打开工程根目录即可,IDEA 会自动导入依赖并识别 Lombok 注解处理。 ## 学习进度记录 > 每完成一个知识点,可以在此表格中打勾记录,方便复盘。 | 日期 | 知识点 | 代码位置 | 备注 / 心得 | | --- | --- | --- | --- | | - | - | - | - | ## 参考资料 - 《数据结构与算法分析》— Mark Allen Weiss - 《算法(第 4 版)》— Robert Sedgewick - 《剑指 Offer》— 何海涛 - [LeetCode](https://leetcode.cn/) - [Java 官方文档](https://docs.oracle.com/en/java/javase/17/docs/api/index.html) ## License 仅用于个人学习与交流。