1
0
mirror of https://github.com/142vip/408CSFamily.git synced 2026-02-03 02:23:38 +08:00

feat: 修改侧边栏内容,大幅增加md初始文档 (#61)

This commit is contained in:
142vip.cn
2023-10-15 01:24:54 +08:00
committed by GitHub
parent 47929acd48
commit fe3dedbc35
114 changed files with 1234 additions and 1289 deletions

View File

@@ -1,5 +1,5 @@
export const FOOTER_HTML_INFO = `<a href="https://tongji.baidu.com/web/welcome/login" target="_blank">百度统计</a>
Copyrights © 2015-${new Date().getFullYear()} 妍荣姑娘网络工作室 <a href="https://github.com/mmdapl" target="_blank">Chu Fan</a>`
Copyrights © 2015-${new Date().getFullYear()} 妍荣姑娘网络工作室 All Rights Reserved <a href="https://github.com/142vip" target="_blank">142vip</a>`
export const NotFoundMsgList = [
"徒留我孤单在湖面成双。",

View File

@@ -31,8 +31,9 @@ export const navbar = [
{
text: "网站",
children: [
"/big-event-history",
"/changelog"
"/big-event-history.md",
"/changelog.md",
"/wechat-list.md"
]
},
];

View File

@@ -20,7 +20,7 @@ export default {
print: false, // 打印按钮
hostname: 'https://408.142vip.cn',
author: {
name: 'Chu Fan',
name: '微信公众号:储凡',
email: 'fairy_408@2925.com',
url: 'https://www.142vip.cn'
},

File diff suppressed because one or more lines are too long

View File

@@ -16,11 +16,11 @@
height: 100vh;
}
</style>
<link rel="stylesheet" href="https://unpkg.com/markmap-toolbar@0.15.4/dist/style.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/markmap-toolbar@0.15.4/dist/style.css">
</head>
<body>
<svg id="mindmap"></svg>
<script src="https://unpkg.com/d3@7.8.5/dist/d3.min.js"></script><script src="https://unpkg.com/markmap-view@0.15.4/dist/browser/index.js"></script><script src="https://unpkg.com/markmap-toolbar@0.15.4/dist/index.js"></script><script>(r => {
<script src="https://cdn.jsdelivr.net/npm/d3@7.8.5/dist/d3.min.js"></script><script src="https://cdn.jsdelivr.net/npm/markmap-view@0.15.4/dist/browser/index.js"></script><script src="https://cdn.jsdelivr.net/npm/markmap-toolbar@0.15.4/dist/index.js"></script><script>(r => {
setTimeout(r);
})(() => {
const {

View File

@@ -1,175 +1,180 @@
///* 此处自定义样式,对主题进行覆盖 */
//
// //首页导航按钮
//.actions>a{
// margin-left: 5px;
// margin-right: 5px;
//}
//// 隐藏 全文搜索
//.DocSearch-Logo{
// // display:none;不占位隐藏
// visibility:hidden; // 占位隐藏
//}
//.DocSearch-Button-Keys{
// visibility:hidden
//}
//// 首页title描述
//.home .hero .description{
// max-width: fit-content;
//}
//
//// 搜索框
//#docsearch-container>button{
// border-radius: 5px;
//}
//
//.code-group__nav-tab-active{
// color:var(--c-brand)
//}
//
//.open-info-div{
// text-align: center;
// align-content: center;
// a{
// margin: 5px;
// }
//}
//
//
//// 全站主题色
//:root {
// // brand colors
// // --c-brand: #3eaf7c;
// // --c-brand-light: #4abf8a;
//
// --c-brand: #4ce9ad;
// --c-brand-light: #42b983;
//
// // background colors
// --c-bg: #ffffff;
// --c-bg-light: #f3f4f5;
// --c-bg-lighter: #eeeeee;
// --c-bg-navbar: var(--c-bg);
// --c-bg-sidebar: var(--c-bg);
// --c-bg-arrow: #cccccc;
//
// // text colors
// --c-text: #2c3e50;
// --c-text-accent: var(--c-brand);
// --c-text-light: #3a5169;
// --c-text-lighter: #4e6e8e;
// --c-text-lightest: #6a8bad;
// --c-text-quote: #999999;
//
// // border colors
// --c-border: #eaecef;
// --c-border-dark: #dfe2e5;
//
// // custom container colors
// --c-tip: #42b983;
// --c-tip-bg: var(--c-bg-light);
// --c-tip-title: var(--c-text);
// --c-tip-text: var(--c-text);
// --c-tip-text-accent: var(--c-text-accent);
// --c-warning: #e7c000;
// --c-warning-bg: #fffae3;
//--c-warning-title: #ad9000;
//--c-warning-text: #746000;
//--c-warning-text-accent: var(--c-text);
//--c-danger: #cc0000;
//--c-danger-bg: #ffe0e0;
//--c-danger-title: #990000;
//--c-danger-text: #660000;
//--c-danger-text-accent: var(--c-text);
//--c-details-bg: #eeeeee;
//
//// badge component colors
//--c-badge-tip: var(--c-tip);
//--c-badge-warning: var(--c-warning);
//--c-badge-danger: var(--c-danger);
//
//// transition vars
//--t-color: 0.3s ease;
//--t-transform: 0.3s ease;
//
//// code blocks vars
//--code-bg-color: #282c34;
//--code-hl-bg-color: rgba(0, 0, 0, 0.66);
//--code-ln-color: #9e9e9e;
//--code-ln-wrapper-width: 3.5rem;
//
//// font vars
//--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
// Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
//--font-family-code: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
//
//// layout vars
//--navbar-height: 3.6rem;
//--navbar-padding-v: 0.7rem;
//--navbar-padding-h: 1.5rem;
//--sidebar-width: 20rem;
//--sidebar-width-mobile: calc(var(--sidebar-width) * 0.82);
//--content-width: 740px;
//--homepage-width: 960px;
//}
//
//// plugin-back-to-top
//.back-to-top {
//--back-to-top-color: var(--c-brand);
//--back-to-top-color-hover: var(--c-brand-light);
//}
//
//// plugin-docsearch
//.DocSearch {
//--docsearch-primary-color: var(--c-brand);
//--docsearch-text-color: var(--c-text);
//--docsearch-highlight-color: var(--c-brand);
//--docsearch-muted-color: var(--c-text-quote);
//--docsearch-container-background: rgba(9, 10, 17, 0.8);
//--docsearch-modal-background: var(--c-bg-light);
//--docsearch-searchbox-background: var(--c-bg-lighter);
//--docsearch-searchbox-focus-background: var(--c-bg);
//--docsearch-searchbox-shadow: inset 0 0 0 2px var(--c-brand);
//--docsearch-hit-color: var(--c-text-light);
//--docsearch-hit-active-color: var(--c-bg);
//--docsearch-hit-background: var(--c-bg);
//--docsearch-hit-shadow: 0 1px 3px 0 var(--c-border-dark);
//--docsearch-footer-background: var(--c-bg);
//}
//
//// plugin-external-link-icon
//.external-link-icon {
//--external-link-icon-color: var(--c-text-quote);
//}
//
//// plugin-medium-zoom
//.medium-zoom-overlay {
//--medium-zoom-bg-color: var(--c-bg);
//}
//
//// plugin-nprogress
//#nprogress {
//--nprogress-color: var(--c-brand);
//}
//
//// plugin-pwa-popup
//.pwa-popup {
//--pwa-popup-text-color: var(--c-text);
//--pwa-popup-bg-color: var(--c-bg);
//--pwa-popup-border-color: var(--c-brand);
//--pwa-popup-shadow: 0 4px 16px var(--c-brand);
//--pwa-popup-btn-text-color: var(--c-bg);
//--pwa-popup-btn-bg-color: var(--c-brand);
//--pwa-popup-btn-hover-bg-color: var(--c-brand-light);
//}
//
//// plugin-search
//.search-box {
//--search-bg-color: var(--c-bg);
//--search-accent-color: var(--c-brand);
//--search-text-color: var(--c-text);
//--search-border-color: var(--c-border);
//
//--search-item-text-color: var(--c-text-lighter);
//--search-item-focus-bg-color: var(--c-bg-light);
//}
/* 此处自定义样式,对主题进行覆盖 */
//首页导航按钮
.actions > a {
margin-left: 5px;
margin-right: 5px;
}
// 隐藏 全文搜索
.DocSearch-Logo {
// display:none;不占位隐藏
visibility: hidden; // 占位隐藏
}
.DocSearch-Button-Keys {
visibility: hidden
}
// 首页title描述
.home .hero .description {
max-width: fit-content;
}
// 搜索框
#docsearch-container > button {
border-radius: 5px;
}
.code-group__nav-tab-active {
color: var(--c-brand)
}
.open-info-div {
text-align: center;
align-content: center;
a {
margin: 5px;
}
}
// 全站主题色
:root {
// brand colors
// --c-brand: #3eaf7c;
// --c-brand-light: #4abf8a;
--c-brand: #4ce9ad;
--c-brand-light: #42b983;
// background colors
--c-bg: #ffffff;
--c-bg-light: #f3f4f5;
--c-bg-lighter: #eeeeee;
--c-bg-navbar: var(--c-bg);
--c-bg-sidebar: var(--c-bg);
--c-bg-arrow: #cccccc;
// text colors
--c-text: #2c3e50;
--c-text-accent: var(--c-brand);
--c-text-light: #3a5169;
--c-text-lighter: #4e6e8e;
--c-text-lightest: #6a8bad;
--c-text-quote: #999999;
// border colors
--c-border: #eaecef;
--c-border-dark: #dfe2e5;
// custom container colors
--c-tip: #42b983;
--c-tip-bg: var(--c-bg-light);
--c-tip-title: var(--c-text);
--c-tip-text: var(--c-text);
--c-tip-text-accent: var(--c-text-accent);
--c-warning: #e7c000;
--c-warning-bg: #fffae3;
--c-warning-title: #ad9000;
--c-warning-text: #746000;
--c-warning-text-accent: var(--c-text);
--c-danger: #cc0000;
--c-danger-bg: #ffe0e0;
--c-danger-title: #990000;
--c-danger-text: #660000;
--c-danger-text-accent: var(--c-text);
--c-details-bg: #eeeeee;
// badge component colors
--c-badge-tip: var(--c-tip);
--c-badge-warning: var(--c-warning);
--c-badge-danger: var(--c-danger);
// transition vars
--t-color: 0.3s ease;
--t-transform: 0.3s ease;
// code blocks vars
--code-bg-color: #282c34;
--code-hl-bg-color: rgba(0, 0, 0, 0.66);
--code-ln-color: #9e9e9e;
--code-ln-wrapper-width: 3.5rem;
// font vars
--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
--font-family-code: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
// layout vars
--navbar-height: 3.6rem;
--navbar-padding-v: 0.7rem;
--navbar-padding-h: 1.5rem;
--sidebar-width: 20rem;
--sidebar-width-mobile: calc(var(--sidebar-width) * 0.82);
--content-width: 740px;
--homepage-width: 960px;
}
// plugin-back-to-top
.back-to-top {
--back-to-top-color: var(--c-brand);
--back-to-top-color-hover: var(--c-brand-light);
}
// plugin-docsearch
.DocSearch {
--docsearch-primary-color: var(--c-brand);
--docsearch-text-color: var(--c-text);
--docsearch-highlight-color: var(--c-brand);
--docsearch-muted-color: var(--c-text-quote);
--docsearch-container-background: rgba(9, 10, 17, 0.8);
--docsearch-modal-background: var(--c-bg-light);
--docsearch-searchbox-background: var(--c-bg-lighter);
--docsearch-searchbox-focus-background: var(--c-bg);
--docsearch-searchbox-shadow: inset 0 0 0 2px var(--c-brand);
--docsearch-hit-color: var(--c-text-light);
--docsearch-hit-active-color: var(--c-bg);
--docsearch-hit-background: var(--c-bg);
--docsearch-hit-shadow: 0 1px 3px 0 var(--c-border-dark);
--docsearch-footer-background: var(--c-bg);
}
// plugin-external-link-icon
.external-link-icon {
--external-link-icon-color: var(--c-text-quote);
}
// plugin-medium-zoom
.medium-zoom-overlay {
--medium-zoom-bg-color: var(--c-bg);
}
// plugin-nprogress
#nprogress {
--nprogress-color: var(--c-brand);
}
// plugin-pwa-popup
.pwa-popup {
--pwa-popup-text-color: var(--c-text);
--pwa-popup-bg-color: var(--c-bg);
--pwa-popup-border-color: var(--c-brand);
--pwa-popup-shadow: 0 4px 16px var(--c-brand);
--pwa-popup-btn-text-color: var(--c-bg);
--pwa-popup-btn-bg-color: var(--c-brand);
--pwa-popup-btn-hover-bg-color: var(--c-brand-light);
}
// plugin-search
.search-box {
--search-bg-color: var(--c-bg);
--search-accent-color: var(--c-brand);
--search-text-color: var(--c-text);
--search-border-color: var(--c-border);
--search-item-text-color: var(--c-text-lighter);
--search-item-focus-bg-color: var(--c-bg-light);
}

View File

@@ -1,4 +1,3 @@
# 大事记

View File

@@ -1,8 +1,5 @@
# 工作机会
### 字节工作内推
```mindmap

View File

@@ -1,32 +1,171 @@
export const cnSidebar = [
{
text: '体系结构',
prefix: 'basic-introduction',
children: []
prefix: '体系结构',
children: [
{
text: '基本介绍',
link: '1.引论.md'
},
{
text: '体系结构与参考模型',
link: '2.体系结构与参考模型.md'
}
]
},
{
text: '物理层',
prefix: 'basic-introduction',
children: []
prefix: '物理层',
children: [
{
text: '通信基础',
link: '1.通信基础.md'
},
{
text: '传输介质',
link: '2.传输介质.md'
},
{
text: '物理层设备',
link: '3.物理层设备.md'
},
{
text: '一些总结',
link: '4.总结.md'
}
]
},
{
text: '数据链路层',
prefix: 'basic-introduction',
children: []
prefix: '数据链路层',
children: [
{
text: '基本功能',
link: '1.通信基础.md'
},
{
text: '组帧',
link: '2.组帧.md'
},
{
text: '差错控制',
link: '3.差错控制.md'
},
{
text: '流量控制&可靠传输',
link: '4.流量控制&可靠传输.md'
},
{
text: '介质访问控制',
link: '5.介质访问控制.md'
},
{
text: '局域网',
link: '6.局域网.md'
},
{
text: '广域网',
link: '7.广域网.md'
},
{
text: '通信设备',
link: '7.通信设备.md'
},
{
text: '一些总结',
link: '8.总结.md'
}
]
},
{
text: '网络层',
prefix: 'basic-introduction',
children: []
prefix: '网络层',
children: [
{
text: '基本功能',
link: '1.基本功能.md'
},
{
text: '路由算法',
link: '2.路由算法.md'
},
{
text: '路由协议',
link: '3.路由协议.md'
},
{
text: 'IPV4',
link: '4.IPV4.md'
},
{
text: 'IPV6',
link: '5.IPV6.md'
},
{
text: 'IP组播&移动IP',
link: '6.IP组播&移动IP.md'
},
{
text: '网络层设备',
link: '7.网络层设备.md'
},
{
text: '一些总结',
link: '8.总结.md'
}
]
},
{
text: '传输层',
prefix: 'basic-introduction',
children: []
prefix: '传输层',
children: [
{
text: '提供的服务',
link: '1.提供的服务.md'
},
{
text: 'UDP协议',
link: '2.UDP协议.md'
},
{
text: 'TCP协议',
link: '3.TCP协议.md'
},
{
text: '一些总结',
link: '4.总结.md'
}
]
},
{
text: '应用层',
prefix: 'basic-introduction',
children: []
prefix: '应用层',
children: [
{
text: '应用模型',
link: '1.应用模型.md'
},
{
text: 'DNS',
link: '2.DNS.md'
},
{
text: 'FTP',
link: '3.FTP.md'
},
{
text: '电子邮件',
link: '4.电子邮件.md'
},
{
text: 'HTTP',
link: '4.HTTP.md'
},
{
text: '一些总结',
link: '5.总结.md'
}
]
}
]

View File

@@ -0,0 +1,3 @@
# 提供的服务
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# UDP协议
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# TCP协议
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 总结
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 基本介绍
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 体系结构与参考模型
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 应用模型
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# DNS
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# FTP
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# HTTP
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 电子邮件
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 总结
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 基本功能
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 组帧
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 差错控制
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 流量控制&可靠传输
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 介质访问控制
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 局域网
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 广域网
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 通信设备
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 总结
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 通信基础
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 传输介质
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 物理层设备
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 总结
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 基本功能
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 路由算法
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 路由协议
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# IPV4
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# IPV6
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# IP组播&移动IP
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 网络层设备
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 一些总结
努力赶稿中,等等我呀...

View File

@@ -32,23 +32,12 @@ export const dsSidebar = [
link: '2.sequential_representation.md'
},
{
text: '链式表示-单链表',
link: '3.single_linked_list.md'
text: '链式表示',
link: '3.chained_representation.md'
},
{
text: '链式表示-双链表',
link: '4.double_linked_list.md'
}, {
text: '链式表示-循环链表',
link: '5.circular_list.md'
},
{
text: '链式表示-静态链表',
link: '6.static_linked_list.md'
},
{
text: '总结',
link: '7.总结.md'
text: '一些总结',
link: '4.总结.md'
}
]
},
@@ -81,9 +70,164 @@ export const dsSidebar = [
link: '6.队列的链式存储结构.md'
},
{
text: '总结',
text: '一些总结',
link: '7.总结.md'
}
]
},
{
text: '串',
prefix: '串',
collapsible: false,
children: [
{
text: '基本概念',
link: '1.基本概念.md'
},
{
text: '简单的模式匹配',
link: '2.简单的模式匹配.md'
},
{
text: 'KMP算法',
link: '3.KMP算法.md'
},
{
text: '一些总结',
link: '4.总结.md'
}
]
},
{
text: '树和二叉树',
prefix: '树和二叉树',
collapsible: false,
children: [
{
text: '基本概念',
link: '1.基本概念.md'
},
{
text: '二叉树',
link: '2.二叉树.md'
},
{
text: '二叉树的遍历',
link: '3.二叉树的遍历.md'
},
{
text: '线索二叉树',
link: '4.线索二叉树.md'
},
{
text: '树和森林',
link: '5.树和森林.md'
},
{
text: '树的应用',
link: '6.树的应用.md'
},
{
text: '一些总结',
link: '7.总结.md'
}
]
},
{
text: '图论',
prefix: '图论',
collapsible: false,
children: [
{
text: '基本概念',
link: '1.基本概念.md'
},
{
text: '图的存储',
link: '2.图的存储.md'
},
{
text: '图的遍历',
link: '3.图的遍历.md'
},
{
text: '图的应用',
link: '4.图的应用.md'
},
{
text: '一些总结',
link: '5.总结.md'
}
]
},
{
text: '查找',
prefix: '查找',
collapsible: false,
children: [
{
text: '基本概念',
link: '1.基本概念.md'
},
{
text: '顺序查找',
link: '2.顺序查找.md'
},
{
text: '折半查找',
link: '3.折半查找.md'
},
{
text: 'B树和B+树',
link: '4.B树和B+树.md'
},
{
text: '散列表',
link: '5.散列表.md'
},
{
text: '一些总结',
link: '6.总结.md'
}
]
},
{
text: '排序',
prefix: '排序',
collapsible: false,
children: [
{
text: '基本概念',
link: '1.基本概念.md'
},
{
text: '插入排序',
link: '2.插入排序.md'
},
{
text: '交换排序',
link: '3.交换排序.md'
},
{
text: '选择排序',
link: '4.选择排序.md'
},
{
text: '归并排序',
link: '5.归并排序.md'
},
{
text: '基数排序',
link: '6.基数排序.md'
},
{
text: '外部排序',
link: '7.外部排序.md'
},
{
text: '一些总结',
link: '8.总结.md'
}
]
}
]

View File

@@ -1,4 +1,12 @@
# 链式表示-单链表
# 链式表示
```mindmap
root(链式表示)
单链表
双链表
循环链表
静态链表
```
顺序表的插入、删除操作需要移动大量元素影响了运行效率虽然时间复杂度为O(1)的情况也存在)。
@@ -12,12 +20,8 @@
**链式存储线性表时,对线性表的插入、删除元素是不需要移动元素的,只是需要修改指针**
- 单链表
- 双链表
- 循环链表
- 静态链表
## 单链表
```mindmap
root(单链表)
@@ -33,7 +37,7 @@ root(单链表)
```
### 单链表
### 基本概念
线性表的链式存储称作`单链表`,通过**一组任意的存储单元**来存储线性表中的数据元素。
@@ -63,7 +67,7 @@ typeof struct LNode{
#### 头结点
### 头结点
为了操作上的方便,在单链表第一个结点之前附加一个结点,叫做**头结点**。
@@ -88,7 +92,7 @@ typeof struct LNode{
#### 头插法
### 头插法
> 从空表开始,生成新的结点,将读取的数据存放在新结点的数据域中,将新结点插入到当前链表的表头【头结点之后】
@@ -137,7 +141,7 @@ LinkList CreateListWithStartNode(LinkList &L){
- 每个结点插入的时间复杂度为O(1),单链表长度为n时头插法的时间复杂度为O(n)【结合算法中的while循环可以很明确看出时间复杂度】
#### 尾插法
### 尾插法
头插法建立的单链表,链表中结点的次序和输入数据的顺序不一致【相反】,尾插法则很好的避免了这个问题;
@@ -198,7 +202,7 @@ LinkList CreateListWithEndNode(LinkList &L){
#### 按序号查找
### 按序号查找
> 在单链表中从第一个结点出发顺指针next域逐个往下搜索、遍历直到找出第i个结点为止否则返回最后一个结点指针域NULL
@@ -252,21 +256,12 @@ LNode *GetElem(LinkList L,int i){
#### 按值查找
### 按值查找
> 从单链表的第一个结点开始从前往后依次比较表中个结点数据域的值等于给定值e则返回该结点的指针若整个单链表【遍历完】中没有数据域值为e的结点则返回NULL
```cpp
/*
* @Description: 单链表按值查找
* @Version: Beta1.0
* @Author: 【B站&公众号】Rong姐姐好可爱
* @Date: 2020-03-04 23:38:04
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
* @LastEditTime: 2020-03-04 23:39:16
*/
LNode *LocateElem(LinkList L,ElemType e){
// 指针【哨兵】
@@ -290,13 +285,13 @@ LNode *LocateElem(LinkList L,ElemType e){
需要遍历扫描单链表时间复杂度为O(n)
#### 结点插入
### 结点插入
> 单链表中将值为x的新结点插入到单链表的第i个位置上
- 第一步: 检查插入位置的合法性;
- 第二步: 找到待插入位置的前驱结点即第i-1个结点
- 第三部: 在前驱结点后插入新结点;
- 第三部: 在前驱结点后插入新结点;
```cpp
// 循环遍历时间复杂度O(n)
@@ -325,13 +320,13 @@ LNode *LocateElem(LinkList L,ElemType e){
##### 前插操作
#### 前插操作
> 在某结点的前面插入一个新的结点
**对结点的前插操作都可以转化为后插操作前提需要从单链表的头结点开始顺序查找到其前驱结点时间复杂度为O(n)。**
##### 后插操作
#### 后插操作
> 在某结点的后面插入一个新的结点,单链表插入算法中,通常采用后插操作的
@@ -353,7 +348,7 @@ s->data=temp;
上述借助临时变量`temp`来将结点s和结点p的数据域进行交换需要开辟O(1)的空间复杂度但是时间复杂度却从O(n)改变为O(1),典型的空间换时间策略
#### 删除结点
### 删除结点
> 将单链表L的第i个结点元素删除
@@ -411,7 +406,7 @@ free(q)
#### 计算表长
### 计算表长
> 计算单链表中数据结点(不含头结点)的个数
@@ -441,5 +436,214 @@ if(L->next===NULL){
```
## 双链表
```mindmap
root(双链表)
基本特点
插入结点
删除结点
```
从单链表的结构上来看
- 访问特定结点的前驱结点需要遍历整个单链表移动指针时间复杂度为O(n)
- 访问特定结点的后继结点只需要移动一次指针时间复杂度为O(1)
双链表的引入,很好的解决单链表访问前驱结点时间消耗大的问题。
双链表结点由三部分组成:
- `数据域` 存放数据信息
- `prior指针域` 指向结点的前驱结点
- `next指针域` 指向结点的后继结点
```cpp
// 双链表结点类型
typedef struct DNode{
ElemType data; // 结点的数据域
struct DNode *prior; // 结点的前驱指针
struct DNode *next; // 结点的后继指针
}DNode, *DlinkList;
```
### 基本特点
- 双链表仅仅在单链表的结点中增加了一个指向结点前驱的`prior`指针;
- `按值查找``按序号查找`在单链表和双链表上的操作是相同的。
- 和单链表不同,`插入``删除`操作除了修改`next`指针域,双链表还需要修改`prior`指针域,确保不断`链`时间复杂度都为O(1)
### 插入结点
> 在双链表中p所指的结点之后插入结点s
```cpp
// 第一步
s->next=p->next;
// 第二步
p->next->prior=s;
// 第三步
s->prior=p;
// 第四步
p->next=s
```
**第一步和第二步必须再第四步之前**整体时间复杂度为O(1)
### 删除结点
> 删除双链表中结点p的后继结点q
```cpp
// 第一步
p->next=q->next;
// 第二步
q->next->prior=p;
// 第三步
free(q);
```
**第一步和第二步顺序可换**整体时间复杂度为O(1)
## 循环链表
```mindmap
循环链表
循环单链表
判空条件
基本特点
循环双链表
判空条件
基本特点
```
### 循环单链表
`循环单链表`是在单链表的基础上,将最后一个结点(尾结点)的指针由`NULL`改为指向`头结点`,形成`环`。【单链表----->循环单链表】
```cpp
// 双链表结点类型
typedef struct DNode{
ElemType data; // 结点的数据域
struct DNode *prior; // 结点的前驱指针
struct DNode *next; // 结点的后继指针
}DNode, *DlinkList;
```
#### 判空条件
**不是判断头结点的指针是否为空,而是需要判断是否等于头指针**表为空时头结点的next指针域其实是指向自己
#### 特点
- 在循环单链表中,尾结点*p的next指针域指向链表L头结点形成了`闭环`,不存在指针域为`NULL`的结点。
- **由于循环单链表是个`环`,在任何位置上的插入、删除操作都是等价的,不需要去判断是否是表尾**。当其中的结点的next指针指向自己也就能判断表为空
- 单链表只能从头结点(表头结点)开始往后顺序遍历整个表,循环单链表可以从表中任意位置开始遍历整个链表,结点是等价的;
- **循环单链表可以抽象为时钟,形成的`环`是有顺序的;**
- 频繁的`表头``表尾`操作,可以对循环单链表设置`尾指针`,而不设置`头指针`明确尾指针r后头指针即为`r->next` ,减少头指针到尾指针间的遍历,时间复杂度:O(n)---->O(1)
### 循环双链表
`循环双链表`是在双链表的基础上,将`尾结点``next`指针指向`头结点`,将`头结点``prior`指针指向`尾结点`。【双链表----->循环双链表】
```cpp
// 双链表结点类型
typedef struct DNode{
ElemType data; // 结点的数据域
struct DNode *prior; // 结点的前驱指针
struct DNode *next; // 结点的后继指针
}DNode, *DlinkList;
```
#### 判空条件
循环双链表为空时,头结点*p的prior指针和next指针都指向L即同时满足
- p->next=L
- p->prior=L
#### 基本特点
- 从双向链表中的任意一个结点开始,都可以很方便地访问它的`前驱结点``后继结点`
## 静态链表
```mindmap
root(链式表示)
单链表
头结点
头插法
尾插法
按序号查找
按值查找
结点插入
删除结点
计算表长
```
> 借助数组来描述线性表的链式存储结构,结点元素同样存在数据域`data`和指针域`next`
注意: 和普通的链表的指针域不同的是,静态链表的指针是结点元素的相对地址(数组下标),也称为`游标`,建议结合高级语言中数组的概念来理解;
**与顺序表一样,虽然静态链表属于链表,但是存储时需要预先分配一块连续的内存空间**
静态链表结构类型:
```cpp
// 定义静态链表的最大长度
# define MaxSize 50
typedef struct{
ElemType data; // 存储数据元素,数据域
int next; // 下个元素的相对地址,数组下标
}SLinkList[MaxSize];
```
很显然,静态链表是通过`数组游标`来访问下一个结点元素,可以和`指针域`的相关概念结合理解;
- 静态链表以`next=-1`作为结束的标志【尾结点】
- 和动态链表相同,**插入、删除操作不需要移动元素,只需要修改指针**
- 总体来说,静态链表没有单链表使用方便,需要将整个链表存储在一块连续的内存空间中,内部的存储可以分散,通过指针构成`链`的关系

View File

@@ -1,87 +0,0 @@
# # 链式表示-双链表
```mindmap
root(双链表)
基本特点
插入结点
删除结点
```
从单链表的结构上来看
- 访问特定结点的前驱结点需要遍历整个单链表移动指针时间复杂度为O(n)
- 访问特定结点的后继结点只需要移动一次指针时间复杂度为O(1)
双链表的引入,很好的解决单链表访问前驱结点时间消耗大的问题。
双链表结点由三部分组成:
- `数据域` 存放数据信息
- `prior指针域` 指向结点的前驱结点
- `next指针域` 指向结点的后继结点
```cpp
// 双链表结点类型
typedef struct DNode{
ElemType data; // 结点的数据域
struct DNode *prior; // 结点的前驱指针
struct DNode *next; // 结点的后继指针
}DNode, *DlinkList;
```
### 基本特点
- 双链表仅仅在单链表的结点中增加了一个指向结点前驱的`prior`指针;
- `按值查找``按序号查找`在单链表和双链表上的操作是相同的。
- 和单链表不同,`插入``删除`操作除了修改`next`指针域,双链表还需要修改`prior`指针域,确保不断`链`时间复杂度都为O(1)
### 插入结点
> 在双链表中p所指的结点之后插入结点s
```cpp
// 第一步
s->next=p->next;
// 第二步
p->next->prior=s;
// 第三步
s->prior=p;
// 第四步
p->next=s
```
**第一步和第二步必须再第四步之前**整体时间复杂度为O(1)
### 删除结点
> 删除双链表中结点p的后继结点q
```cpp
// 第一步
p->next=q->next;
// 第二步
q->next->prior=p;
// 第三步
free(q);
```
**第一步和第二步顺序可换**整体时间复杂度为O(1)

View File

@@ -1,73 +0,0 @@
# 链式表示-循环链表
```mindmap
循环链表
循环单链表
判空条件
基本特点
循环双链表
判空条件
基本特点
```
### 循环单链表
`循环单链表`是在单链表的基础上,将最后一个结点(尾结点)的指针由`NULL`改为指向`头结点`,形成`环`。【单链表----->循环单链表】
```cpp
// 双链表结点类型
typedef struct DNode{
ElemType data; // 结点的数据域
struct DNode *prior; // 结点的前驱指针
struct DNode *next; // 结点的后继指针
}DNode, *DlinkList;
```
#### 判空条件
**不是判断头结点的指针是否为空,而是需要判断是否等于头指针**表为空时头结点的next指针域其实是指向自己
#### 特点
- 在循环单链表中,尾结点*p的next指针域指向链表L头结点形成了`闭环`,不存在指针域为`NULL`的结点。
- **由于循环单链表是个`环`,在任何位置上的插入、删除操作都是等价的,不需要去判断是否是表尾**。当其中的结点的next指针指向自己也就能判断表为空
- 单链表只能从头结点(表头结点)开始往后顺序遍历整个表,循环单链表可以从表中任意位置开始遍历整个链表,结点是等价的;
- **循环单链表可以抽象为时钟,形成的`环`是有顺序的;**
- 频繁的`表头``表尾`操作,可以对循环单链表设置`尾指针`,而不设置`头指针`明确尾指针r后头指针即为`r->next` ,减少头指针到尾指针间的遍历,时间复杂度:O(n)---->O(1)
### 循环双链表
`循环双链表`是在双链表的基础上,将`尾结点``next`指针指向`头结点`,将`头结点``prior`指针指向`尾结点`。【双链表----->循环双链表】
```cpp
// 双链表结点类型
typedef struct DNode{
ElemType data; // 结点的数据域
struct DNode *prior; // 结点的前驱指针
struct DNode *next; // 结点的后继指针
}DNode, *DlinkList;
```
#### 判空条件
循环双链表为空时,头结点*p的prior指针和next指针都指向L即同时满足
- p->next=L
- p->prior=L
#### 基本特点
- 从双向链表中的任意一个结点开始,都可以很方便地访问它的`前驱结点``后继结点`

View File

@@ -1,45 +0,0 @@
# 链式表示-静态链表
```mindmap
root(链式表示)
单链表
头结点
头插法
尾插法
按序号查找
按值查找
结点插入
删除结点
计算表长
```
> 借助数组来描述线性表的链式存储结构,结点元素同样存在数据域`data`和指针域`next`
注意: 和普通的链表的指针域不同的是,静态链表的指针是结点元素的相对地址(数组下标),也称为`游标`,建议结合高级语言中数组的概念来理解;
**与顺序表一样,虽然静态链表属于链表,但是存储时需要预先分配一块连续的内存空间**
静态链表结构类型:
```cpp
// 定义静态链表的最大长度
# define MaxSize 50
typedef struct{
ElemType data; // 存储数据元素,数据域
int next; // 下个元素的相对地址,数组下标
}SLinkList[MaxSize];
```
很显然,静态链表是通过`数组游标`来访问下一个结点元素,可以和`指针域`的相关概念结合理解;
- 静态链表以`next=-1`作为结束的标志【尾结点】
- 和动态链表相同,**插入、删除操作不需要移动元素,只需要修改指针**
- 总体来说,静态链表没有单链表使用方便,需要将整个链表存储在一块连续的内存空间中,内部的存储可以分散,通过指针构成`链`的关系

View File

@@ -1,31 +1,41 @@
# 数据结构
### 基础入门
## 基础入门
- [x] 基本概念
- [x] 数据结构三要素
- [x] 算法和算法评价
### 线性表
## 线性表
- [x] 基础概念和操作
- [x] 顺序表示
- [x] 链式表示-单链表
- [x] 链式表示-双链表
- [x] 链式表示-循环链表
- [x] 链式表示-静态链表
- [x] 总结
- [x] 链式表示
- [x] 一些总结
### 栈和队列
## 栈和队列
- [x] 基本概念和操作
- [x] 顺序存储结构
- [x] 链式存储结构
- [x] 一些总结
## 队列
- [x] 基本概念和操作
- [x] 顺序存储结构
- [x] 链式存储结构
- [x] 一些总结
## 参考资料:
- 《数据结构》. 严蔚敏著
- 《数据结构-王道考研》. 2019 王道论坛
- [x] 栈-基本概念和操作
- [x] 栈-顺序存储结构
- [x] 栈-链式存储结构
- [x] 队列-基本概念和操作
- [x] 队列-顺序存储结构
- [x] 队列-链式存储结构
- [x] 总结

View File

@@ -0,0 +1,3 @@
# 基本概念
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 简单的模式匹配
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# KMP算法
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 总结
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,5 @@
# 基本概念
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 图的存储
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 图的遍历
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 图的应用
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 总结
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 基本概念
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 插入排序
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 交换排序
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 选择排序
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 归并排序
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 基数排序
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 外部排序
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 总结
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 基本概念
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 顺序查找
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 折半查找
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# B树和B+树
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 散列表
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 总结
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 基本概念
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 二叉树
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 二叉树的遍历
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 线索二叉树
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 树和森林
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 树的应用
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 一些总结
努力赶稿中,等等我呀...

View File

@@ -3,9 +3,6 @@
<a href="../../mark-map/ds-map.html" target="_blank">在线预览</a>
## 基础入门
### 基本概念

View File

@@ -8,8 +8,9 @@
- <a href="../../mark-map/cn-map.html" target="_blank">计算机网络</a>
<ClientOnly>
<XMindManager></XMindManager>
</ClientOnly>
[//]: # (xmind在线加载时间太长)
[//]: # (<ClientOnly>)
[//]: # (<XMindManager></XMindManager>)
[//]: # (</ClientOnly>)

View File

@@ -2,50 +2,116 @@ export const osSidebar = [
{
text: '系统概述',
prefix: '系统概述',
collapsible: false,
children: [
{
text: '引论',
link: '1.操作系统引论.md'
},
{
text: '发展和分类',
link: '2.发展和分类.md'
},
{
text: '运行环境',
link: '3.运行环境.md'
},
{
text: '体系结构',
link: '4.体系结构.md'
}
]
},
{
text: '进程管理',
prefix: '进程管理',
collapsible: true,
children: [
{
text: '基本概念',
link: '1.basic_concepts.md'
text: '进程和线程',
link: '1.进程和线程.md'
},
{
text: '处理机调度',
link: '2.处理机调度.md'
},
{
text: '进程同步',
link: '3.进程同步.md'
},
{
text: '死锁',
link: '4.死锁.md'
},
{
text: '一些总结',
link: '5.总结.md'
}
]
},
{
text: '内存管理',
prefix: '内存管理',
collapsible: true,
children: [
{
text: '基本概念',
link: '1.basic_concepts.md'
text: '引论',
link: '1.引论.md'
},
{
text: '虚拟内存',
link: '2.虚拟内存.md'
},
{
text: '一些总结',
link: '3.总结.md'
}
]
},
{
text: '文件管理',
prefix: '文件管理',
collapsible: true,
children: [
{
text: '基本概念',
link: '1.basic_concepts.md'
link: '1.基本概念.md'
},
{
text: '文件系统',
link: '2.文件系统.md'
},
{
text: '磁盘管理',
link: '3.磁盘管理.md'
},
{
text: '一些总结',
link: '4.总结.md'
}
]
},
{
text: 'I/O管理',
prefix: 'I/O管理',
text: '输入、输出管理',
prefix: '输入、输出管理',
collapsible: true,
children: [
{
text: '基本概',
link: '1.basic_concepts.md'
text: '基本概',
link: '1.基本概述g.md'
},
{
text: '核心子系统',
link: '2.核心子系统.md'
},
{
text: '高速缓存和缓冲区',
link: '3.高速缓存和缓冲区.md'
},
{
text: '一些总结',
link: '4.总结.md'
}
]
}

View File

@@ -1,7 +1,7 @@
# 操作系统
```mindmap
操作系统
系统概述
@@ -15,21 +15,25 @@
I/O管理
```
### 系统概述
## 系统概述
- 引论
- 发展和分类
- 运行环境
- 体系结构
### 进程管理
## 进程管理
- 进程基本概念和特征
- 进程的运行
### 进程管理
## 内存管理
### 文件管理
## 文件管理
### I/O管理
## I/O管理
## 参考资料:
- 《计算机操作系统-第四版》. 汤小丹、梁红兵、汤子瀛著
- 《操作系统-王道考研》. 2019 王道论坛

View File

@@ -0,0 +1,3 @@
# 引论
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 虚拟内存
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 一些总结
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 基本概念
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 文件系统
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 磁盘管理
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 一些总结
努力赶稿中,等等我呀...

View File

@@ -1,10 +1,10 @@
# 操作系统引论
## 操作系统的目标和作用
## 目标和作用
> 操作系统Operating System是配置在计算机硬件上的第一层软件是对硬件系统的首次扩充。主要作用是管理好硬件设备提高硬件设备的利用率的系统吞吐量并为用户和应用程序提供简单的接口便于用户使用。**操作系统是现在计算机系统中最基本和最重要的系统软件**
### 操作系统的目标
### 目标
> 方便性、有效性、可扩充性、开放性
@@ -32,7 +32,7 @@
所谓开放性即指系统能遵循世界标准规范特别是遵循开放系统互连OSI国际标准而事实上方式遵循国际标准所开发的硬件和软件都能够彼此兼容方便实现互连。开放性是衡量一个新推出的系统或者软件能否被广泛应用的至关重要的因素
### 操作系统的作用
### 作用
> 操作系统在计算机系统中所起的作用,可以从用户、资源管理、资源抽象等不通维度去分析和讨论
>

View File

@@ -0,0 +1,3 @@
# 发展和分类
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 运行环境
努力赶稿中,等等我呀...

View File

@@ -0,0 +1,3 @@
# 体系结构
努力赶稿中,等等我呀...

Some files were not shown because too many files have changed in this diff Show More