# DataStructure_Algorithm_ZJU **Repository Path**: zsg1001/DataStructure_Algorithm_ZJU ## Basic Information - **Project Name**: DataStructure_Algorithm_ZJU - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: week1 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-01-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DataStructure_Algorithm_ZJU 中国大学慕课上陈越老师和何钦铭老师主讲的数据结构课程[课程链接](https://www.icourse163.org/course/zju0901-93001?from=study),本项目整理课程相关内容,并利用Python将课程相关作业进行实现,相关视频内容[视频链接](https://www.bilibili.com/video/av18586085?from=search&seid=3036863598612909610),具体题目信息可以直接搜索题目名字进行查询。 To-do: - [ ] 加入其他语言完成作业的branch,欢迎大家fork添加! - [ ] 没有达到满分的作业,如果发现请在issue中添加,我会尽早解决。 ## [第一讲 基本概念](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5) 通过研究很多例子去理解究竟什么是“数据结构”、为什么在教数据结构的时候要讲算法、以及相关的基本概念和常用术语。希望这次课的学习能让你明白为什么要学,并且在后面的学习中知道哪些术语是什么意思。 ### 课件内容: * 1.1 什么是数据结构 * 1.2 什么是算法 * 1.3 应用实例:最大子列和问题 ### 题目内容: * 01-复杂度1 最大子列和问题 * 01-复杂度2 Maximum Subsequence Sum * 01-复杂度3 二分查找 ## [第二讲 线形结构](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E7%BA%BF%E5%BD%A2%E7%BB%93%E6%9E%84) 介绍最基础的一种数据结构类型:线性结构,包括线性表、堆栈和队列。重点关注:如何用数组或者链表存储对象及关系、如何实现主要操作,以及有哪些典型的应用。 ### 课件内容: * 2.1 线性表及其实现 * 2.2 堆栈 * 2.3 队列 * 2.4 应用实例:多项式加法运算 * 小白专场:多项式乘法与加法运算- C实现(3小节共27:43) * 线性结构之习题选讲[陈越]:Reversing Linked List ### 题目内容: * 02-线性结构1 两个有序链表序列的合并 * 02-线性结构2 一元多项式的乘法与加法运算 * 02-线性结构3 Reversing Linked List * 02-线性结构4 Pop Sequence ## [第三讲 树(上)](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E6%A0%91%EF%BC%88%E4%B8%8A%EF%BC%89) 一般树的表示、二叉树及其存储、二叉树的遍历,当然最后还有详细讲解二叉树同构问题的"小白专场"。 ### 课件内容: * 3.1 树与树的表示 * 3.2 二叉树及存储结构 * 3.3 二叉树的遍历 * 小白专场:树的同构 - C语言实现 * 树之习题选讲-Tree Traversals Again ### 题目内容: * 03-树1 树的同构 * 03-树2 List Leaves * 03-树3 Tree Traversals Again ## [第四讲 树(中)](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E6%A0%91%EF%BC%88%E4%B8%AD%EF%BC%89) 二叉搜索树,平衡二叉树。 ### 课件内容: * 4.1 二叉搜索树 * 4.2 平衡二叉树 * 小白专场:是否同一棵二叉搜索树- C实现 * 树之习题选讲-Complete Binary Search Tree ### 题目内容: * 04-树4 是否同一棵二叉搜索树 * 04-树5 Root of AVL Tree * 04-树6 Complete Binary Search Tree ## [第五讲 树(下)](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E6%A0%91%EF%BC%88%E4%B8%8B%EF%BC%89) "堆":类似操作系统进程调度这样的场景中,我们需要管理一个带任务优先级的队列,经常要从优先队列中获取优先级最高的任务。堆结构将告诉你如何高效地解决这类问题。
"哈夫曼树和哈夫曼编码":编码是通讯和数据传输中最基本的问题。如何针对不同的出现频率高效地编码以提高传输和存储的效率?哈夫曼树就是一种很好的方法。
"集合及运算":有许多貌似复杂的问题可以归结为等价类划分问题。以树形式表示的并查集方法就可以很方便、高效地解决等价类划分问题。 ### 课件内容: * 5.1 堆 * 5.2 哈夫曼树与哈夫曼编码 * 5.3 集合及运算 * 小白专场:堆中的路径 - C语言实现 * 小白专场[陈越]:File Transfer - C语言实现 * 树之习题选讲- Huffman Codes ### 题目内容: * 05-树7 堆中的路径 * 05-树8 File Transfer * 05-树9 Huffman Codes.py ## [第六讲 图(上)](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E5%9B%BE%EF%BC%88%E4%B8%8A%EF%BC%89) 了解什么是图,怎么存储、以及怎么遍历图。 ### 课件内容: * 6.1 什么是图 * 6.2 图的遍历 * 6.3 应用实例:拯救007 * 6.4 应用实例:六度空间 * 小白专场:如何建立图- C语言实现 ### 题目内容: * 06-图1 列出连通集 * 06-图2 Saving James Bond - Easy Version * 06-图3 六度空间 ## [第七讲 图(中)](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E5%9B%BE%EF%BC%88%E4%B8%AD%EF%BC%89) 最短路径问题。 ### 课件内容: * 7.1 最短路径问题 * 小白专场:哈利•波特的考试- C语言实现 ### 题目内容: * 07-图4 哈利·波特的考试 * 07-图5 Saving James Bond - Hard Version * 07-图6 旅游规划.py ## [第八讲 图(下)](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E5%9B%BE%EF%BC%88%E4%B8%8B%EF%BC%89) 最小生成树问题,拓扑排序。 ### 课件内容: * 8.1 最小生成树问题 * 8.2 拓扑排序 * 图之习题选讲-旅游规划 ### 题目内容: * 08-图7 公路村村通 * 08-图8 How Long Does It Take * 08-图9 关键活动 ## [第九讲 排序(上)](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E6%8E%92%E5%BA%8F%EF%BC%88%E4%B8%8A%EF%BC%89) 简单排序,希尔排序,堆排序,归并排序。 ### 课件内容: * 9.1 简单排序(冒泡、插入) * 9.2 希尔排序 * 9.3 堆排序 * 9.4 归并排序(3小节共28:22) * 习题选讲-Insert or Merge ### 题目内容: * 09-排序1 排序 * 09-排序2 Insert or Merge * 09-排序3 Insertion or Heap Sort ## [第十讲 排序(下)](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E6%8E%92%E5%BA%8F%EF%BC%88%E4%B8%8B%EF%BC%89) 快速排序,表排序,基数排序,排序算法的比较。 ### 课件内容: * 10.1 快速排序 * 10.2 表排序 * 10.3 基数排序 * 10.4 排序算法的比较 * 习题选讲-Sort with Swap(0,*) ### 题目内容: * 10-排序4 统计工龄 * 10-排序5 PAT Judge * 10-排序6 Sort with Swap(0, i) ## [第十一讲 散列查找](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/%E6%95%A3%E5%88%97%E6%9F%A5%E6%89%BE) 散列查找的核心:“直接计算”的函数怎么设计?有冲突怎么办? ### 课件内容: * 11.1 散列表 * 11.2 散列函数的构造方法 * 11.3 冲突处理方法 * 11.4 散列表的性能分析 * 11.5 应用实例:词频统计 * 小白专场[陈越]:电话聊天狂人- C语言实现 * 习题选讲-Hashing - Hard Version ### 题目内容: * 11-散列1 电话聊天狂人 * 11-散列2 Hashing * 11-散列3 QQ帐户的申请与登陆 * 11-散列4 Hashing - Hard Version ## [第十二讲 KMP算法](https://github.com/CYBruce/DataStructure-Algorithm_ZJU/tree/week1/KMP%E7%AE%97%E6%B3%95) ### 课件内容: * 串的模式匹配(KMP算法)