From 2cad3ce9200b5abbc971d4961c2816639caf2d05 Mon Sep 17 00:00:00 2001 From: Kim Yang Date: Sun, 16 Aug 2020 19:41:25 +0800 Subject: [PATCH] :sparkles: Add Web notes --- .gitignore | 3 +- Notes/.vuepress/config.js | 127 +++++++++++ Notes/.vuepress/public/408.jpg | Bin 0 -> 57145 bytes Notes/.vuepress/style/index.styl | 17 ++ Notes/.vuepress/style/palette.styl | 1 + Notes/ComputerNetwork/README.md | 3 + Notes/ComputerOrganization/README.md | 2 + .../Doc_0_0_数据结构基本概念.md | 123 +++++++++++ .../DS_0_Introduction/Doc_0_1_算法基本概念.md | 134 ++++++++++++ .../DS_0_Introduction/Doc_0_2_错题总结.md | 58 +++++ .../DataStructure/DS_0_Introduction/README.md | 12 ++ .../DS_1_LinearList/Doc_1_0_线性表.md | 39 ++++ .../DS_1_LinearList/Doc_1_1_顺序表.md | 202 ++++++++++++++++++ .../DS_1_LinearList/Doc_1_2_单链表.md | 182 ++++++++++++++++ .../DS_1_LinearList/Doc_1_3_双链表.md | 36 ++++ .../DS_1_LinearList/Doc_1_4_循环链表.md | 38 ++++ .../DS_1_LinearList/Doc_1_5_静态链表.md | 30 +++ .../DS_1_LinearList/Doc_1_6_章节总结.md | 42 ++++ .../DS_1_LinearList/Doc_1_7错题总结.md | 26 +++ Notes/DataStructure/DS_1_LinearList/README.md | 17 ++ .../DS_2_StackAndQueue/Doc_2_0_栈.md | 24 +++ .../DS_2_StackAndQueue/Doc_2_1_顺序栈.md | 41 ++++ .../DS_2_StackAndQueue/Doc_2_2_链栈.md | 18 ++ .../DS_2_StackAndQueue/Doc_2_3_队列.md | 19 ++ .../DS_2_StackAndQueue/Doc_2_4_顺序队列.md | 53 +++++ .../DS_2_StackAndQueue/Doc_2_5_链式队列.md | 44 ++++ .../DS_2_StackAndQueue/Doc_2_6_双端队列.md | 34 +++ .../DS_2_StackAndQueue/Doc_2_7_栈的应用.md | 148 +++++++++++++ .../DS_2_StackAndQueue/Doc_2_8_队列的应用.md | 26 +++ .../DS_2_StackAndQueue/README.md | 14 ++ Notes/DataStructure/DS_3_String/Doc_3_0_串.md | 23 ++ .../DS_3_String/Doc_3_1_串的存储结构.md | 29 +++ .../DS_3_String/Doc_3_2_模式匹配.md | 26 +++ .../DS_3_String/Doc_3_3_KMP算法.md | 56 +++++ .../DS_3_String/Doc_3_4_KMP算法的优化.md | 13 ++ Notes/DataStructure/DS_3_String/README.md | 15 ++ .../DS_4_TreeAndBinaryTree/Doc_4_0_树.md | 30 +++ .../Doc_4_10_树的存储结构.md | 3 + .../Doc_4_11_数和森林的遍历.md | 3 + .../Doc_4_12_二叉排序树.md | 2 + .../Doc_4_13_平衡二叉树.md | 3 + .../Doc_4_14_哈夫曼树.md | 1 + .../Doc_4_1_树的性质.md | 15 ++ .../DS_4_TreeAndBinaryTree/Doc_4_2_二叉树.md | 19 ++ .../Doc_4_3_二叉树的性质.md | 17 ++ .../Doc_4_4_二叉树的存储结构.md | 30 +++ .../Doc_4_5_二叉树的遍历.md | 39 ++++ .../Doc_4_6_二叉树的构造.md | 34 +++ .../Doc_4_7_线索二叉树.md | 44 ++++ .../Doc_4_8_二叉树的线索化.md | 11 + .../Doc_4_9_线索二叉树的前驱和后继.md | 3 + .../DS_4_TreeAndBinaryTree/README.md | 5 + Notes/DataStructure/DS_5_Graph/Doc_5_0_图.md | 2 + .../DS_5_Graph/Doc_5_1_图的存储结构.md | 2 + .../DS_5_Graph/Doc_5_2_图的基本操作.md | 1 + .../DS_5_Graph/Doc_5_3_图的遍历.md | 2 + Notes/DataStructure/DS_5_Graph/README.md | 3 + .../DataStructure/DS_6_Search/Doc_6_0_搜索.md | 1 + Notes/DataStructure/DS_6_Search/README.md | 2 + Notes/DataStructure/DS_7_Sort/Doc_7_0_排序.md | 1 + Notes/DataStructure/DS_7_Sort/README.md | 2 + Notes/DataStructure/README.md | 28 +++ Notes/OperatingSystem/README.md | 2 + Notes/README.md | 131 ++++++++++++ Notes/contact.md | 3 + package.json | 16 ++ 66 files changed, 2129 insertions(+), 1 deletion(-) create mode 100644 Notes/.vuepress/config.js create mode 100644 Notes/.vuepress/public/408.jpg create mode 100644 Notes/.vuepress/style/index.styl create mode 100644 Notes/.vuepress/style/palette.styl create mode 100644 Notes/ComputerNetwork/README.md create mode 100644 Notes/ComputerOrganization/README.md create mode 100644 Notes/DataStructure/DS_0_Introduction/Doc_0_0_数据结构基本概念.md create mode 100644 Notes/DataStructure/DS_0_Introduction/Doc_0_1_算法基本概念.md create mode 100644 Notes/DataStructure/DS_0_Introduction/Doc_0_2_错题总结.md create mode 100644 Notes/DataStructure/DS_0_Introduction/README.md create mode 100644 Notes/DataStructure/DS_1_LinearList/Doc_1_0_线性表.md create mode 100644 Notes/DataStructure/DS_1_LinearList/Doc_1_1_顺序表.md create mode 100644 Notes/DataStructure/DS_1_LinearList/Doc_1_2_单链表.md create mode 100644 Notes/DataStructure/DS_1_LinearList/Doc_1_3_双链表.md create mode 100644 Notes/DataStructure/DS_1_LinearList/Doc_1_4_循环链表.md create mode 100644 Notes/DataStructure/DS_1_LinearList/Doc_1_5_静态链表.md create mode 100644 Notes/DataStructure/DS_1_LinearList/Doc_1_6_章节总结.md create mode 100644 Notes/DataStructure/DS_1_LinearList/Doc_1_7错题总结.md create mode 100644 Notes/DataStructure/DS_1_LinearList/README.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/Doc_2_0_栈.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/Doc_2_1_顺序栈.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/Doc_2_2_链栈.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/Doc_2_3_队列.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/Doc_2_4_顺序队列.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/Doc_2_5_链式队列.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/Doc_2_6_双端队列.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/Doc_2_7_栈的应用.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/Doc_2_8_队列的应用.md create mode 100644 Notes/DataStructure/DS_2_StackAndQueue/README.md create mode 100644 Notes/DataStructure/DS_3_String/Doc_3_0_串.md create mode 100644 Notes/DataStructure/DS_3_String/Doc_3_1_串的存储结构.md create mode 100644 Notes/DataStructure/DS_3_String/Doc_3_2_模式匹配.md create mode 100644 Notes/DataStructure/DS_3_String/Doc_3_3_KMP算法.md create mode 100644 Notes/DataStructure/DS_3_String/Doc_3_4_KMP算法的优化.md create mode 100644 Notes/DataStructure/DS_3_String/README.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_0_树.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_10_树的存储结构.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_11_数和森林的遍历.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_12_二叉排序树.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_13_平衡二叉树.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_14_哈夫曼树.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_1_树的性质.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_2_二叉树.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_3_二叉树的性质.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_4_二叉树的存储结构.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_5_二叉树的遍历.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_6_二叉树的构造.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_7_线索二叉树.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_8_二叉树的线索化.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/Doc_4_9_线索二叉树的前驱和后继.md create mode 100644 Notes/DataStructure/DS_4_TreeAndBinaryTree/README.md create mode 100644 Notes/DataStructure/DS_5_Graph/Doc_5_0_图.md create mode 100644 Notes/DataStructure/DS_5_Graph/Doc_5_1_图的存储结构.md create mode 100644 Notes/DataStructure/DS_5_Graph/Doc_5_2_图的基本操作.md create mode 100644 Notes/DataStructure/DS_5_Graph/Doc_5_3_图的遍历.md create mode 100644 Notes/DataStructure/DS_5_Graph/README.md create mode 100644 Notes/DataStructure/DS_6_Search/Doc_6_0_搜索.md create mode 100644 Notes/DataStructure/DS_6_Search/README.md create mode 100644 Notes/DataStructure/DS_7_Sort/Doc_7_0_排序.md create mode 100644 Notes/DataStructure/DS_7_Sort/README.md create mode 100644 Notes/DataStructure/README.md create mode 100644 Notes/OperatingSystem/README.md create mode 100644 Notes/README.md create mode 100644 Notes/contact.md create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 963f9ff..e95020b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Prerequisites *.d - +node_modules/ +yarn.lock cmake-build-debug/* .idea/* diff --git a/Notes/.vuepress/config.js b/Notes/.vuepress/config.js new file mode 100644 index 0000000..4735b95 --- /dev/null +++ b/Notes/.vuepress/config.js @@ -0,0 +1,127 @@ +module.exports = { + site:{ + "title": "CSPostgraduate", + "description": "CSKaoYan CSPostgraduate 408", + "base": "/", + "pages": [ + { + "lastUpdated": 1524027677000, + "path": "/", + "title": "CSPostgraduate", + "frontmatter": {} + }, + ] + }, + theme: '@vuepress/theme-default', + themeConfig: { + logo: '/assets/img/logo.png', + nav: [ + {text: '首页', link: '/'}, + {text: '数据结构', link: '/DataStructure/'}, + {text: '计算机组成原理', link: '/ComputerOrganization/'}, + {text: '计算机网络', link: '/ComputerNetwork/'}, + {text: '操作系统', link: '/OperatingSystem/'}, + {text: '联系我', link: '/contact'}, + {text: 'GitHub', link: 'https://github.com/KimYangOfCat/2021-CSPostgraduate-408', target: '_blank'}, + ], + sidebar: + { + '/DataStructure/': getDataStructureSidebar(), + '/ComputerOrganization/':getComputerOrganizationSidebar(), + '/ComputerNetwork/':getComputerNetworkSidebar(), + '/OperatingSystem/':getOperatingSystemSidebar(), + // fallback + '/': [ + // '', /* / */ + 'contact', /* /contact.html */ + // 'about' /* /about.html */ + ] + }, + + sidebarDepth: 2, + // 默认值是 true 。设置为 false 来禁用所有页面的 下一篇 链接 + nextLinks: true, + // 默认值是 true 。设置为 false 来禁用所有页面的 上一篇 链接 + prevLinks: true, + + smoothScroll: true, + } +} + +function getDataStructureSidebar() { + return [ + '/DataStructure/', + { + title: '0、绪论', // 必要的 + path: '/DataStructure/DS_0_Introduction', // 可选的, 标题的跳转链接,应为绝对路径且必须存在 + collapsable: true, // 可选的, 默认值是 true, + sidebarDepth: 2, // 可选的, 默认值是 1 + children: [ + '/DataStructure/DS_0_Introduction/Doc_0_0_数据结构基本概念', + '/DataStructure/DS_0_Introduction/Doc_0_1_算法基本概念', + '/DataStructure/DS_0_Introduction/Doc_0_2_错题总结', + ] + }, + { + title: '1、线性表', // 必要的 + path: '/DataStructure/DS_1_LinearList', // 可选的, 标题的跳转链接,应为绝对路径且必须存在 + collapsable: true, // 可选的, 默认值是 true, + sidebarDepth: 2, // 可选的, 默认值是 1 + children: [ + '/DataStructure/DS_1_LinearList/Doc_1_0_线性表', + '/DataStructure/DS_1_LinearList/Doc_1_1_顺序表', + '/DataStructure/DS_1_LinearList/Doc_1_2_单链表', + '/DataStructure/DS_1_LinearList/Doc_1_3_双链表', + '/DataStructure/DS_1_LinearList/Doc_1_4_循环链表', + '/DataStructure/DS_1_LinearList/Doc_1_5_静态链表', + '/DataStructure/DS_1_LinearList/Doc_1_6_章节总结', + ] + }, + { + title: '2、栈与队列', // 必要的 + path: '/DataStructure/DS_2_StackAndQueue', // 可选的, 标题的跳转链接,应为绝对路径且必须存在 + collapsable: true, // 可选的, 默认值是 true, + sidebarDepth: 2, // 可选的, 默认值是 1 + children: [ + '/DataStructure/DS_2_StackAndQueue/Doc_2_0_栈', + '/DataStructure/DS_2_StackAndQueue/Doc_2_1_顺序栈', + '/DataStructure/DS_2_StackAndQueue/Doc_2_2_链栈', + '/DataStructure/DS_2_StackAndQueue/Doc_2_3_队列', + '/DataStructure/DS_2_StackAndQueue/Doc_2_4_顺序队列', + '/DataStructure/DS_2_StackAndQueue/Doc_2_5_链式队列', + '/DataStructure/DS_2_StackAndQueue/Doc_2_6_双端队列', + '/DataStructure/DS_2_StackAndQueue/Doc_2_7_栈的应用', + '/DataStructure/DS_2_StackAndQueue/Doc_2_8_队列的应用', + ] + }, + { + title: '3、字符串', // 必要的 + path: '/DataStructure/DS_3_String', // 可选的, 标题的跳转链接,应为绝对路径且必须存在 + collapsable: true, // 可选的, 默认值是 true, + sidebarDepth: 2, // 可选的, 默认值是 1 + children: [ + '/DataStructure/DS_3_String/Doc_3_0_串', + '/DataStructure/DS_3_String/Doc_3_1_串的存储结构', + '/DataStructure/DS_3_String/Doc_3_2_模式匹配', + '/DataStructure/DS_3_String/Doc_3_3_KMP算法', + '/DataStructure/DS_3_String/Doc_3_4_KMP算法的优化', + ] + }, + ] +} + +function getComputerOrganizationSidebar() { + return [ + '/ComputerOrganization/', + ] +} +function getComputerNetworkSidebar() { + return [ + '/ComputerNetwork/', + ] +} +function getOperatingSystemSidebar() { + return [ + '/OperatingSystem/', + ] +} \ No newline at end of file diff --git a/Notes/.vuepress/public/408.jpg b/Notes/.vuepress/public/408.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e730fb8638e6d4d94705775ea022e46ff62641e GIT binary patch literal 57145 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 kxF-zr;Lp)osd-Gr2mJtqO code + font-size: 14px !important; + & > p + margin: -5px 0 -20px 0; + code + background-color: #46ADD8 !important; + padding: 3px 5px; + border-radius: 3px; + color #000 + em + color #808080 + font-weight light \ No newline at end of file diff --git a/Notes/.vuepress/style/palette.styl b/Notes/.vuepress/style/palette.styl new file mode 100644 index 0000000..f851de8 --- /dev/null +++ b/Notes/.vuepress/style/palette.styl @@ -0,0 +1 @@ +$accentColor = #46ADD8 \ No newline at end of file diff --git a/Notes/ComputerNetwork/README.md b/Notes/ComputerNetwork/README.md new file mode 100644 index 0000000..004be4c --- /dev/null +++ b/Notes/ComputerNetwork/README.md @@ -0,0 +1,3 @@ +# 计算机网络 + +内容建设中~👨🏻‍🔧👨🏻‍🔧👨🏻‍🔧👨🏻‍🔧👨🏻‍🔧👨🏻‍🔧 \ No newline at end of file diff --git a/Notes/ComputerOrganization/README.md b/Notes/ComputerOrganization/README.md new file mode 100644 index 0000000..986e8b5 --- /dev/null +++ b/Notes/ComputerOrganization/README.md @@ -0,0 +1,2 @@ +# 计算机组成原理 +内容建设中~👨🏻‍🔧👨🏻‍🔧👨🏻‍🔧👨🏻‍🔧👨🏻‍🔧👨🏻‍🔧 \ No newline at end of file diff --git a/Notes/DataStructure/DS_0_Introduction/Doc_0_0_数据结构基本概念.md b/Notes/DataStructure/DS_0_Introduction/Doc_0_0_数据结构基本概念.md new file mode 100644 index 0000000..9dd8a56 --- /dev/null +++ b/Notes/DataStructure/DS_0_Introduction/Doc_0_0_数据结构基本概念.md @@ -0,0 +1,123 @@ +# 绪论第一节 + +![image-20200616203728181](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001224.jpg) + +## 基本概念 + +### 什么是数据? + +数据是**信息的载体**,是客观描述事物属性的数、字符及**所有能输入到计算机中并被计算机程序识别和处理的符号**的集合。数据是计算机程序加工的原料。 + +### 数据元素、数据项 + +**数据元素**是数据的基本单位,通常作为一个整体进行考虑和处理。 + +一个数据元素可由若干**数据项**组成,数据项是构成数据元素的不可分割的最小单位。 + +### 数据结构、数据对象 + +结构——各个元素之间的关系 + +**数据结构**是互相之间存在一个或多种**特定关系**的数据元素的集合。 + +**数据对象**是具有**相同性质**的数据元素的集合,是一个数据的子集。 + +## 三要素 + +![image-20200616204952204](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001225.jpg) + +### 逻辑结构 + +即,数据元素之间的逻辑关系是什么? + +![image-20200616205141919](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001226.jpg) + +#### 集合 + +![image-20200616205508144](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001227.jpg) + +各个数据元素同属一个集合,别无其它关系 + +#### 线性结构 + +![image-20200616205527638](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001228.jpg) + +数据元素之间是一对一的关系,除了第一个元素,所有元素都有唯一前驱,除了最后一个元素,所有元素都有唯一后继 + +#### 树形结构 + +![image-20200616205648476](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001229.jpg) + +数据元素之间是一对多的关系 + +#### 图结构 + +![image-20200616205732165](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001230.jpg) + +数据元素之间是多对多的关系 + +### 物理结构 + +即,物理结构,如何用计算机表示数据元素的逻辑关系? + +#### 顺序存储 + +![image-20200616205941135](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001231.jpg) + +**把逻辑上相邻的元素存储在物理地址上也相邻的存储单元中**,元素之间的关系由存储单元的领接关系来体现。 + +#### 链式存储 + +![image-20200616210302754](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001232.jpg) + +#### 索引存储 + +![image-20200616210349944](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001233.jpg) + +#### 散列存储 + +![image-20200616210434678](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001234.jpg) + +#### 总结 + +![image-20200616210508542](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001235.jpg) + +1. 若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺存储,则各个数据元素在物理上是可以离散的 +2. 数据的存储结构会影响存储空间的分配的方便程度 +3. 数据的存储机构会影响对数据运算的速度 + +### 数据的运算 + +施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,正对运算的功能;运算的实现是针对存储结构的,指的是运算实现的具体操作步骤。 + +## 数据类型、抽象数据类型 + +### 数据类型 + +数据类型是一个值的集合和定义在此集合的一组操作的总称。 + +1. 原子类型,其值不可再分的数据类型 +2. 结构类型,其值可以再分解为若干成分(分量)的数据类型 + +![image-20200616211417412](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001236.jpg) + +### 抽象数据类型 + +Abstract Data Type (ADT)是抽象数据组织及与之相关的操作。 + +ADT 是用数学化的语言定义数据的逻辑结构、定义运算。与其具体的实现无关(类似于定义类吗?可能) + +## 总结 + +![image-20200616212103345](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001237.jpg) + +![image-20200616212152228](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001238.jpg) + +在探讨一种数据结构时: + +1. 定义逻辑结构(数据原元素之间的关系) +2. 定义数据的运算(针对现实需求,应该对这种逻辑结构进行什么样的运算) +3. 确定某种存储结构,实现数据结构,并实现一些对数据结构的基本运算 + +![image-20200616212530957](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001239.jpg) + diff --git a/Notes/DataStructure/DS_0_Introduction/Doc_0_1_算法基本概念.md b/Notes/DataStructure/DS_0_Introduction/Doc_0_1_算法基本概念.md new file mode 100644 index 0000000..ab56ecd --- /dev/null +++ b/Notes/DataStructure/DS_0_Introduction/Doc_0_1_算法基本概念.md @@ -0,0 +1,134 @@ + + +# 绪论第二节——算法 + +## 基本概念 + +![image-20200616214853491](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001358.jpg) + +### 什么是算法? + +程序=数据结构+算法 + +![image-20200616215006166](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001359.jpg) + +###算法的特性 + +1. 有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。 + + 注:算法必须是有穷的,二程序可以是无穷的。 + + ![image-20200616215340371](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001400.jpg) + +2. 确定性:算法每一条指令必须有确切的含义,对于相同的输入只能得出相同的输出 + +3. 可行性:算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。 + +4. 输入:一个算法有0个或多个输入,这些输入取自某个特定对象的集合。 + +5. 输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。 + + 五个特性,缺一不可 + +####“好”算法的特质 + +1. 正确性:算法应能正确地解决求解问题。 +2. 可读性:算法应具有良好的可读性,帮助人们理解。 +3. 健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。 +4. 高效率与底存储量需求:执行速度快,时间复杂度低。不费内存,空间复杂度低。 + +###总结 + +![image-20200616220536590](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001401.jpg) + +## 算法效率的度量 + +![image-20200616220923527](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001402.jpg) + +### 如何评估算法时间开销? + +**让算法先运行,事后统计运行时间?** + +存在的问题? + +* 和机器性能有关,比如:超级计算机VS单片机 +* 和编程语言有关,越高级的语言执行效率越低,没错,就是越低 +* 和编译程序产生的机器指令质量有关 +* 有些算法是不能事后统计的,比如,导弹控制算法。 + +评价一个算法优劣时,需要排除与算法本身无关的外界因素,能否事先估计? + +### 算法时间复杂度 + +事前预估算法时间开销T(n)与问题规模n的关系(T 表示 time) + +如何计算T,例子: + +![image-20200616234743261](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001403.jpg) + +#### 问题1:是否可以忽略表达式某些部分? + +![image-20200616235203889](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001404.jpg) + +1. 加法规则:多项相加,只保留最高阶的项,且系数变为1 + + ![image-20200616235558501](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001405.jpg) + +2. 乘法规则:多项相乘,都保留 + + ![image-20200616235856976](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001406.jpg) + +##### 算法时间复杂度阶数顺序 + +![image-20200617000121744](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001407.jpg) + +![image-20200617000310666](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001408.jpg) + +#### 如果有好几千行代码,需要一行一行数? + +1. 顺序执行的代码只会影响常数项,可以忽略 +2. 只需要挑循环中的一个基本操作,分析它的执行次数和n的关系就好 +3. 如果有多层嵌套循环,只需要关注最深层的循环循环了几次 + +#### 小练习 + +![image-20200617001603926](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001409.jpg) + +![image-20200617001659516](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001410.jpg) + +![image-20200617001353856](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001411.jpg) + +#### 总结 + +![image-20200617001826231](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001412.jpg) + +算法的性能问题只有在n很大时才会暴露出来。 + +### 算法空间复杂度 + +#### 原地工作算法 + +![image-20200617002424730](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001413.jpg) + +分析空间复杂度时,只需关注与问题规模相关的变量就好(讲人话,就是,看程序中的变量就好) + +![image-20200617002625466](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001414.jpg) + +加法法则 + +![image-20200617002941853](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001415.jpg) + +#### 函数递归调用带来的内存开销 + +![image-20200617003249255](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001416.jpg) + +在这种情况下,空间复杂度等于递归调用的深度。 + +![image-20200617003702543](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001417.jpg) + +递归调用的过程中,每一次开辟的内存空间也可以不一致,如上例。 + +#### 总结 + +![image-20200617003857723](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001418.jpg) + diff --git a/Notes/DataStructure/DS_0_Introduction/Doc_0_2_错题总结.md b/Notes/DataStructure/DS_0_Introduction/Doc_0_2_错题总结.md new file mode 100644 index 0000000..61a7528 --- /dev/null +++ b/Notes/DataStructure/DS_0_Introduction/Doc_0_2_错题总结.md @@ -0,0 +1,58 @@ +# 错题总结 + +## 绪论 + +### 1.1数据结构 + +![image-20200620141611126](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001559.jpg) + +![image-20200620141729678](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001600.jpg) + + + +![image-20200620141623755](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001601.jpg) + +![image-20200620141744664](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001602.jpg) + + + +![image-20200620141644083](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001603.jpg) + +![image-20200620141822782](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001604.jpg) + + + +![image-20200620141659734](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001605.jpg) + +![image-20200620141857733](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001606.jpg) + + + +### 1.2算法 + +![image-20200620144456037](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001607.jpg) + +![image-20200620144443934](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001608.jpg) + + + +![image-20200620144648263](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001609.jpg) + +![image-20200620144742685](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001610.jpg) + + + +![image-20200620144922849](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001611.jpg) + +![image-20200620145032775](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001612.jpg) + + + +![image-20200620145234727](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001613.jpg) + +![image-20200620145244254](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001614.jpg) + +![image-20200620145307619](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810001615.jpg) + + + diff --git a/Notes/DataStructure/DS_0_Introduction/README.md b/Notes/DataStructure/DS_0_Introduction/README.md new file mode 100644 index 0000000..d20b581 --- /dev/null +++ b/Notes/DataStructure/DS_0_Introduction/README.md @@ -0,0 +1,12 @@ +# 绪论 + +## 目录 + +* [数据结构基本概念](Doc_0_0_数据结构基本概念.md) +* [算法基本概念](Doc_0_1_算法基本概念.md) +* [课后习题错题总结](Doc_0_2_错题总结.md) + +## 课件目录 + + + diff --git a/Notes/DataStructure/DS_1_LinearList/Doc_1_0_线性表.md b/Notes/DataStructure/DS_1_LinearList/Doc_1_0_线性表.md new file mode 100644 index 0000000..5b9ab5d --- /dev/null +++ b/Notes/DataStructure/DS_1_LinearList/Doc_1_0_线性表.md @@ -0,0 +1,39 @@ +# 线性表 + +##线性表的基本概念 + +![image-20200617165505571](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002132.jpg) + +### 线性表的定义 + +线性表是具有相同数据类型的n(n>=0)个元素的有限序列。 + +![image-20200617165917735](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002133.jpg) + +### 线性表的基本操作 + +![image-20200617171119623](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002134.jpg) + + + + +#### 什么时候要传入参数的引用“&”? + +一种是值类型,使用时会直接复制原值,修改参数不会影响原值 + +![image-20200617171738597](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002135.jpg) + +一种是引用类型,使用时操作的是原值,修改时直接修改原值!(C语言不支持这种引用类型!) + +![image-20200617171916923](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002136.jpg) + +#### 为什么要实现对数据结构的基本操作? + +1. 团队合作编程,你定义的数据结构要让别人能够很方便的使用(封装) +2. 将常用的操作/运算封装称函数,避免重复工作,降低出错风险。 + +### 总结 + +![image-20200617171547528](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002137.jpg) + +注意⚠️:位序是用1开始计算的!!! diff --git a/Notes/DataStructure/DS_1_LinearList/Doc_1_1_顺序表.md b/Notes/DataStructure/DS_1_LinearList/Doc_1_1_顺序表.md new file mode 100644 index 0000000..d7d21c7 --- /dev/null +++ b/Notes/DataStructure/DS_1_LinearList/Doc_1_1_顺序表.md @@ -0,0 +1,202 @@ +# 顺序表 +##顺序表的基本概念 + +![image-20200617172240151](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002154.jpg) + +### 顺序表的定义 + +![image-20200617172428297](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002155.jpg) + +### 顺序表的初始化 + +#### 静态分配 + +![image-20200617172843813](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002156.jpg) + +具体实现: + +![image-20200617173539443](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002157.jpg) + +```c +//初始化(静态分配) +void InitList(SqList &L){ + for (int i = 0; i < MaxSize; i++) { + L.data[i]=0;//将所有元素的初始值默认设置为0 + //这一步其实可以省略,但是省略之后,有可能受到内存中"脏数据"的影响 + } + L.length=0; +} +``` + +##### 问题反思 + +1. 如果“数组”存满留怎么办? + +可以放弃治疗,顺序表长刚开始确定后就无法更改(存储空间是静态的) + +2. 如果一开始就声明一个很大的内存空间呢?会存在什么问题? + +浪费,会造成大量的浪费。 + +#### 动态分配 + +![image-20200617190108177](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002158.jpg) + +具体实现方式 + +![image-20200617190651552](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002159.jpg) + +```c +//初始化(动态方式) +bool InitList(SeqList &L){ + //用 malloc 函数申请一片连续的存储空间 + L.data=(int *)malloc(InitSize*sizeof(int)); + if (L.data==NULL) + //要细心呀,这里不小心写成了赋值语句,但是没有报错,找了半天错误! + return false; + //(int *) 是指针的强制类型转换 + L.length=0; + L.MaxSize=InitSize; + return true; +} +``` + +#### 总结 + +![image-20200617190838244](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002200.jpg) + +![image-20200617191008606](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002201.jpg) + +### 顺序表的基本操作 + +#### 插入 + +ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。 + +![image-20200617211304785](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002202.jpg) + +详细实现方式: + +![image-20200617212225782](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002203.jpg) + +优化之后: + +![image-20200617212144846](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002204.jpg) + +```c +bool ListInsert(SqList &L,int i,int e){ + //判断插入的位置是否合法, + if (i<1||i>L.length+1) + return false; + //判断表是否存满了 + if (L.length>=MaxSize) + return false; + + //后面的元素后移 + for (int j = L.length; j >=i ; j--) { + L.data[j]=L.data[j-1]; + } + L.data[i-1]=e; + L.length++; + return true; +} +``` + +#####插入操作的时间复杂度分析 + +![image-20200617213723625](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002205.jpg) + +#### 删除 + +![image-20200617220850929](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002206.jpg) + +```c +//删除 +bool ListDelete(SqList &L,int i,int &e){ + //判断i的位置是否合法 + if(i<0||i>L.length){ + return false; + } + //取出将要被删除的数 + e=L.data[i-1]; + //将其后的数据前移 + for (int j = i; j <=L.length ; j++) { + L.data[j-1]=L.data[j]; + } + //线性表长度减一 + L.length--; + return true; +} +``` + + + +##### 删除操作的时间复杂度分析 + +![image-20200617221030044](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002207.jpg) + +#### 总结反思 + +![image-20200617221250309](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002208.jpg) + +#### 查找 +#####按位查找 + +GetElem(L,i):按位查找操作,获取表L中第i个位置的元素的值 + +###### 静态分配状态下的实现方式 + +![image-20200617222107279](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002209.jpg) + +###### 动态分配状态下的实现方式 + +![image-20200617222212660](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002210.jpg) + +用指针加数组下标的方式取数据的时候,数组类型决定着取数据时取几个字节!! + +```c +//按位查找 +int GetElem(SeqList L,int i){ + //判断是否越界 + if (i<0||i>L.length) + return -1; + return L.data[i-1]; +} +``` + +###### 按位查找的时间复杂度分析 + +![image-20200617222451314](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002211.jpg) + +##### 按值查找 + +![image-20200618215105169](https://cdn.jsdelivr.net/gh/KimYangOfCat/MyPicStorage/2021-CSPostgraduate-408/20200810002212.jpg) + +```c +//按值查找 +int LocateElem(SeqList L,int e){ + //循环出查找 + for (int i = 0; i 【新增】 | 中山大学 | 复旦大学【新增】 | 华南理工大学 | +| :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | +| ![南开大学](https://i.loli.net/2020/08/05/nCWq9TA14GLyi5H.png) | ![华东师范大学](https://i.loli.net/2020/08/05/nT8myqI5FduVfi4.png) | ![中山大学](https://i.loli.net/2020/08/05/xaN5zuBhEnIZ1PW.jpg) | ![复旦大学](https://i.loli.net/2020/08/05/aP8MbpoSRBGUEjY.jpg) | ![华南理工大学](https://i.loli.net/2020/08/05/EHeP8yvmZtqTkC3.jpg) | + +### 211高校 + +| 海南大学 | 广西大学 | 宁夏大学 | 贵州大学
【新增】 | 青海大学 | 上海大学 | +| :----------------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | +| ![海南大学](https://i.loli.net/2020/08/05/VgOTaJS7ByIh9Xs.jpg) | ![广西大学](https://s1.ax1x.com/2020/08/05/a668MQ.jpg) | ![宁夏大学](https://i.loli.net/2020/08/05/Wru6DQYCdGlA3Bt.jpg) | ![贵州大学](https://s1.ax1x.com/2020/08/05/a66Grj.png) | ![青海大学](https://i.loli.net/2020/08/05/aXYNTvbOr2V4e3U.jpg) | ![上海大学](https://i.loli.net/2020/08/05/HD2yApjXqNbfrzK.png) | + +| 郑州大学
【新增】 | 云南大学
【新增】 | 河北工业大学
【新增】 | 华中农业大学
【新增】 | 西南财经大学 | 武汉理工大学
【新增】 | +| :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | +| ![郑州大学](https://i.loli.net/2020/08/05/gjnyFvfSB7Wwd2x.jpg) | ![云南大学](https://i.loli.net/2020/08/05/CPFeWfzAMIxj6Hq.jpg) | ![河北工业大学](https://i.loli.net/2020/08/05/zAFXOC719uQqba4.png) | ![华中农业大学](https://i.loli.net/2020/08/05/7zI6fExRGhkV98u.jpg) | ![西南财经大学](https://i.loli.net/2020/08/05/5NuiKVeImjto17z.jpg) | ![武汉理工大学](https://i.loli.net/2020/08/05/9olAxazJNuWHnZX.jpg) | + +## 经验贴 + +经验贴在王道上有很多,就推荐一些读过并觉得很好的贴子给大家吧! + ++ [20华南理工大学(数二、英二、408)407分意识流分析贴](http://www.cskaoyan.com/forum.php?mod=viewthread&tid=659830&highlight=408) ++ [20上交408复习](https://www.zhihu.com/question/371489743/answer/1314525010?utm_source=wechat_session&utm_medium=social&utm_oi=746271865860796416) + +## 408 科目 + +### [数据结构](DataStructure) +`DataStructure`文件夹下为 2021 [王道考研](http://cskaoyan.com/forum.php)课程数据结构源代码!点击此下载[ 21王道数据结构 PDF](https://github.com/KimYangOfCat/2021-CSPostgraduate-408/releases/tag/%E8%BE%85%E5%AF%BC%E4%B9%A6%E7%B1%8D) + +#### 语言 + +虽然都是.cpp文件,但其中的语法既有C++的语法也有部分C的语法! + +如果想要C++版本的源码,可以参考我学习数据结构时写的一些数据结构的C++版本源码![传送门](https://github.com/KimYangOfCat/Data_Structure) 在此~ + +#### IDE +书写并运行源码使用的 IDE 是 `CLion`,其主要的配置文件是仓库根目录下的 `CMakeLists.txt` 文件。 + +#### 章节目录 +* [绪论](DataStructure/DS_0_Introduction) +* [线性表](DataStructure/DS_1_LinearList) +* [栈与队列](DataStructure/DS_2_StackAndQueue) +* [字符串](DataStructure/DS_3_String) +* [树与二叉树](DataStructure/DS_4_TreeAndBinaryTree) +* [图](DataStructure/DS_5_Graph) +* [查找](DataStructure/DS_6_Search) +* [排序](DataStructure/DS_7_Sort) + +### [计算机组成原理](ComputerOrganization) + +推荐到王道论坛游览[计算机组成原理](http://www.cskaoyan.com/forum-25-1.html)相关的学习方法。 + +### [操作系统](OperatingSystem) + +推荐到王道论坛游览[操作系统](http://www.cskaoyan.com/forum-26-1.html)相关的学习方法。 + +### [计算机网络](ComputerNetwork) + +推荐到王道论坛游览[计算机网络](http://www.cskaoyan.com/forum-27-1.html)相关的学习方法。 + + +### 总结 +408四门科目,除了数据结构有一些代码的实操之外,其余三门课程都是以理论为主,所以学习它们的过程中还是建议以书本为主。 +即便是数据结构,在408的考试时数据结构也只是要求写出算法逻辑就好,并不要求代码有可执行性,所以对于一些喜欢敲代码的小伙伴, +不能一味沉浸在用键盘敲代码的状态中。为了提前适应考试,还是提前适应在纸上写代码的感觉。因为日常敲代码的过程中,智能的IDE会给你提供很大的帮助, +你只需要记住核心逻辑,但是在纸上写代码, 一些基本的语法还是🉐️熟悉,并能默写出来。 + +## 视频教程 ++ [数据结构](https://www.bilibili.com/video/BV1b7411N798) ++ [计算机组成原理](https://www.bilibili.com/video/BV1BE411D7ii) ++ [操作系统](https://www.bilibili.com/video/BV1YE411D7nH) ++ [计算机网络](https://www.bilibili.com/video/BV19E411D78Q) + +所有视频教程均来源于王道考研B站官方账号,视频大部分为旧版内容,但其实知识要点都是一样的,值得学习。其中也包含了部分新版视频,全部新版视频为收费内容,虽然白嫖很香😜,但建议在经济条件允许的条件下,支持正版👍🏻~ + +## 辅导书籍 + +### 王道系列 + +王道系列起源于[王道考研论坛](http://cskaoyan.com/),从它的论坛中,你能找到不少经验贴,非常值得关注!而王道系列辅导书籍,题量充足,知识点全面,可能更适合科班考研🈶️一定专业课基础的同学。 + +需要2021王道高清无水印PDF,可至[Release](https://github.com/KimYangOfCat/2021-CSPostgraduate-408/releases/tag/%E8%BE%85%E5%AF%BC%E4%B9%A6%E7%B1%8D)中下载。 +### 天勤系列 + +天勤系列,相比于王道更注重基础知识,,但是题量并没有王道的多。也正是由于它更注重基础,所以也许它更适合跨考计算机的同学。 + + +但是总的来说,辅导资料这一块儿还是适合自己的最好。所以对自己的知识储备有较为清晰的认识也许对你复习 408 更有帮助。 + +需要2021天勤高清无水印PDF,可至[Release](https://github.com/KimYangOfCat/2021-CSPostgraduate-408/releases/tag/%E8%BE%85%E5%AF%BC%E4%B9%A6%E7%B1%8Dv1)中下载。 + +## 教材 + +* 数据结构 严薇敏 第二版 +* 计算机网络 谢希仁 第七版 +* 计算机组成原理 唐朔飞 第二版 +* 操作系统 汤子瀛 +* 计算机网络自顶向下方法 第七版 + +## 真题 +干净无水印的真题资源十分稀少可贵,在搜集的过程中,本仓库尽力找了一些干净无水印的资源,奈何个人力量有限,其中有些真题资源的质量仍不如人意。 + +目前本仓库只收录了[408 真题](408Exam),如果你有其他专业课或者更干净无水印的真题资源,欢迎提交 PR 或者在 issues 中提交相关资源的下载链接,感激不尽~ + + +## 贡献 + +看到这里了,如果觉得对你有所帮助的话,不妨给本仓库点个 Star ⭐️吧! + +如果你有新的内容📜想要贡献到本仓库或者发现了本仓库的一些错误🐛,👏🏻欢迎阅读[贡献文档](CONTRIBUTE.md)提交Pr~ + +## ❤️致谢 +欢迎你前来占据前排👏🏻~ \ No newline at end of file diff --git a/Notes/contact.md b/Notes/contact.md new file mode 100644 index 0000000..1cfc4d3 --- /dev/null +++ b/Notes/contact.md @@ -0,0 +1,3 @@ +# 联系我 + +给Kim发送邮件 \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..0e59e07 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "Vuepress", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "scripts": { + "dev": "vuepress dev Notes", + "build": "vuepress build Notes" + }, + "devDependencies": { + "vuepress": "^1.5.3" + }, + "dependencies": { + "@vuepress/theme-default": "^1.5.3" + } +}