├── 01 - 408 ├── 01 - Data Structure │ ├── Code │ │ ├── CourceBook │ │ │ ├── 0204_LinkList │ │ │ │ ├── test.txt │ │ │ │ ├── head.txt │ │ │ │ ├── tail.txt │ │ │ │ ├── LinkList.c │ │ │ │ ├── LinkList.h │ │ │ │ ├── LinkList-main.c │ │ │ │ ├── 0204_LinkList.vcxproj.user │ │ │ │ └── 0204_LinkList.vcxproj.filters │ │ │ ├── 0205_MergeLkList │ │ │ │ ├── La_Tail.txt │ │ │ │ ├── Lb_Tail.txt │ │ │ │ ├── LinkList.c │ │ │ │ ├── LinkList.h │ │ │ │ ├── LinkLkList.c │ │ │ │ ├── MergeLkList.h │ │ │ │ ├── MergeLkList-main.c │ │ │ │ ├── 0205_MergeLkList.vcxproj.user │ │ │ │ └── 0205_MergeLkList.vcxproj.filters │ │ │ ├── 0201_SqList │ │ │ │ ├── x64 │ │ │ │ │ └── Debug │ │ │ │ │ │ ├── 0201_SqList.tlog │ │ │ │ │ │ ├── unsuccessfulbuild │ │ │ │ │ │ ├── CL.command.1.tlog │ │ │ │ │ │ └── 0201_SqList.lastbuildstate │ │ │ │ │ │ ├── vc142.idb │ │ │ │ │ │ ├── vc142.pdb │ │ │ │ │ │ └── 0201_SqList.log │ │ │ │ ├── SqList.c │ │ │ │ ├── SqList.h │ │ │ │ ├── SqList-main.c │ │ │ │ ├── 0201_SqList.vcxproj.user │ │ │ │ └── 0201_SqList.vcxproj.filters │ │ │ ├── 0302_Conversion │ │ │ │ ├── Conversion-main.c │ │ │ │ ├── Conversion.h │ │ │ │ ├── 0302_Conversion.vcxproj.user │ │ │ │ ├── Conversion.c │ │ │ │ ├── SqStack.h │ │ │ │ ├── 0302_Conversion.vcxproj.filters │ │ │ │ └── SqStack.c │ │ │ ├── 0304_Maze │ │ │ │ ├── Maze.h │ │ │ │ ├── Maze-main.c │ │ │ │ ├── 0304_Maze.vcxproj.user │ │ │ │ ├── SqStack.h │ │ │ │ ├── 0304_Maze.vcxproj.filters │ │ │ │ ├── SqStack.c │ │ │ │ └── Maze.c │ │ │ ├── 0202_Union │ │ │ │ ├── SqList.h │ │ │ │ ├── Sqlist.c │ │ │ │ ├── Union.c │ │ │ │ ├── Union.h │ │ │ │ ├── Union-main.c │ │ │ │ ├── 0202_Union.vcxproj.user │ │ │ │ └── 0202_Union.vcxproj.filters │ │ │ ├── 0306_Hanoi │ │ │ │ ├── Hanoi.c │ │ │ │ ├── Hanoi.h │ │ │ │ ├── Hanoi-main.c │ │ │ │ ├── 0306_Hanoi.vcxproj.user │ │ │ │ └── 0306_Hanoi.vcxproj.filters │ │ │ ├── 0203_MergeList │ │ │ │ ├── SqList.c │ │ │ │ ├── SqList.h │ │ │ │ ├── MergeSqList.c │ │ │ │ ├── MergeSqList.h │ │ │ │ ├── MergeSqList-main.c │ │ │ │ ├── MergeSqList-main.cpp │ │ │ │ ├── 0203_MergeList.vcxproj.user │ │ │ │ └── 0203_MergeList.vcxproj.filters │ │ │ ├── 0303_LineEdit │ │ │ │ ├── LineEdit.c │ │ │ │ ├── LineEdit.h │ │ │ │ ├── LineEdit-main.c │ │ │ │ ├── 0303_LineEdit.vcxproj.user │ │ │ │ ├── SqStack.h │ │ │ │ ├── 0303_LineEdit.vcxproj.filters │ │ │ │ └── SqStack.c │ │ │ ├── 0308_SqQueue │ │ │ │ ├── SqQueue.c │ │ │ │ ├── SqQueue.h │ │ │ │ ├── SqQueue-main.c │ │ │ │ ├── 0308_SqQueue.vcxproj.user │ │ │ │ └── 0308_SqQueue.vcxproj.filters │ │ │ ├── 0401_SString │ │ │ │ ├── SString.h │ │ │ │ ├── 0401_SString.vcxproj.user │ │ │ │ ├── 0401_SString.vcxproj.filters │ │ │ │ ├── SString-main.c │ │ │ │ └── SString.c │ │ │ ├── 0402_HString │ │ │ │ ├── HString.h │ │ │ │ ├── HSting-main.c │ │ │ │ ├── 0402_HString.vcxproj.user │ │ │ │ ├── 0402_HString.vcxproj.filters │ │ │ │ └── HString.c │ │ │ ├── 0403_LString │ │ │ │ ├── LString.h │ │ │ │ ├── 0403_LString.vcxproj.user │ │ │ │ ├── 0403_LString.vcxproj.filters │ │ │ │ └── LString.c │ │ │ ├── 0405_WordList │ │ │ │ ├── HString.h │ │ │ │ ├── WordList.c │ │ │ │ ├── WordList.h │ │ │ │ ├── ELinkList.h │ │ │ │ ├── 0405_WordList.vcxproj.user │ │ │ │ ├── 0405_WordList.vcxproj.filters │ │ │ │ └── HString.c │ │ │ ├── 0206_SLinkList │ │ │ │ ├── SLinkList.c │ │ │ │ ├── SLinkList.h │ │ │ │ ├── SLinkList-main.c │ │ │ │ ├── 0206_SLinkList.vcxproj.user │ │ │ │ └── 0206_SLinkList.vcxproj.filters │ │ │ ├── 0209_ElinkList │ │ │ │ ├── ELinkList.h │ │ │ │ ├── ELinkList-main.c │ │ │ │ ├── ElinkList.vcxproj.user │ │ │ │ └── ElinkList.vcxproj.filters │ │ │ ├── 0307_LinkQueue │ │ │ │ ├── LinkQueue.c │ │ │ │ ├── LinkQueue.h │ │ │ │ ├── LinkQueue-main.c │ │ │ │ ├── 0307_LinkQueue.vcxproj.user │ │ │ │ └── 0307_LinkQueue.vcxproj.filters │ │ │ ├── 0207_Difference │ │ │ │ ├── Difference.c │ │ │ │ ├── Difference.h │ │ │ │ ├── SLinkList.c │ │ │ │ ├── SLinkList.h │ │ │ │ ├── 0207_Difference.vcxproj.user │ │ │ │ ├── Difference-main.c │ │ │ │ └── 0207_Difference.vcxproj.filters │ │ │ ├── 0208_DuLinkList │ │ │ │ ├── DuLinkList.c │ │ │ │ ├── DuLinkList.h │ │ │ │ ├── DuLinkList-main.c │ │ │ │ ├── 0208_DuLinkList.vcxproj.user │ │ │ │ └── 0208_DuLinkList.vcxproj.filters │ │ │ ├── 0211_Polynomial │ │ │ │ ├── ELinkList.c │ │ │ │ ├── ELinkList.h │ │ │ │ ├── Pololynomial.h │ │ │ │ ├── Polynomial-main.c │ │ │ │ ├── 0211_Polynomial.vcxproj.user │ │ │ │ ├── 0211_Polynomial.vcxproj.filters │ │ │ │ └── Polynomial.c │ │ │ ├── 0305_Expression │ │ │ │ ├── Expression.c │ │ │ │ ├── Expression.h │ │ │ │ ├── 0305_Expression.vcxproj.user │ │ │ │ ├── Expression-main.c │ │ │ │ ├── SqStack.h │ │ │ │ ├── 0305_Expression.vcxproj.filters │ │ │ │ └── SqStack.c │ │ │ ├── 0210_MergeELinkList │ │ │ │ ├── ELinkList.c │ │ │ │ ├── ELinkList.h │ │ │ │ ├── MergeELinkList-mian.c │ │ │ │ ├── MergeELinkList.vcxproj.user │ │ │ │ ├── MergeELinkList.h │ │ │ │ ├── MergeELinkList.c │ │ │ │ └── MergeELinkList.vcxproj.filters │ │ │ ├── 0404_KMP │ │ │ │ ├── 0404_KMP.vcxproj.user │ │ │ │ ├── KMP.h │ │ │ │ ├── KMP-main.c │ │ │ │ ├── KMP.c │ │ │ │ ├── SString.h │ │ │ │ ├── 0404_KMP.vcxproj.filters │ │ │ │ └── SString.c │ │ │ └── 0301_SqStack │ │ │ │ ├── 0301_SqStack.vcxproj.user │ │ │ │ ├── SqStack-main.c │ │ │ │ ├── SqStack.h │ │ │ │ ├── 0301_SqStack.vcxproj.filters │ │ │ │ └── SqStack.c │ │ ├── image │ │ │ ├── 00.png │ │ │ ├── 01.png │ │ │ ├── 01-16499471437031.png │ │ │ └── image-20220414224202938.png │ │ ├── Status │ │ │ └── Status.h │ │ └── ReadMe.md │ └── Readme.md └── 00 - Computer composition pricile │ ├── image │ ├── ch03_02_01.jpg │ ├── ch07_00_00.svg │ ├── ch05_00_00.svg │ └── ch04_00_00.svg │ ├── old_image │ ├── ch01_00_00.png │ ├── ch01_00_01.png │ ├── ch01_00_02.png │ ├── ch01_00_03.png │ ├── ch01_00_04.png │ ├── ch01_00_05.png │ ├── ch01_01_00.png │ ├── ch01_01_01.png │ ├── ch01_01_02.png │ ├── ch01_01_03.png │ ├── ch02_00_00.png │ ├── ch03_02_00.png │ ├── ch03_02_01.jpg │ ├── ch03_02_02.png │ ├── ch03_02_03.png │ ├── ch03_03_00.png │ ├── ch03_03_01.png │ ├── ch03_03_02.png │ ├── ch03_03_03.png │ ├── ch03_03_04.png │ ├── ch03_03_05.png │ └── ch03_03_06.png │ ├── ch02_计算机的发展及应用.md │ └── ch01_计算机系统概述.md ├── 00 - Math ├── 00 - advanced mathematics │ ├── image │ │ ├── ch1_00.png │ │ ├── ch1_01.png │ │ ├── ch1_02.png │ │ ├── ch1_03.png │ │ ├── ch1_04.png │ │ ├── ch1_05.png │ │ ├── ch1_06.png │ │ ├── ch1_07.png │ │ ├── ch1_08.png │ │ ├── ch1_09.png │ │ ├── ch1_10.png │ │ ├── ch1_11.png │ │ ├── ch1_12.png │ │ ├── ch1_13.png │ │ ├── ch1_14.png │ │ ├── ch1_15.png │ │ ├── ch1_16.png │ │ ├── ch1_17.png │ │ ├── ch1_18.png │ │ ├── ch1_19.png │ │ ├── ch1_20.png │ │ ├── ch1_21.png │ │ ├── ch1_22.png │ │ ├── ch1_23.png │ │ ├── ch1_24.png │ │ ├── ch1_25.png │ │ ├── ch1_26.png │ │ ├── ch1_27.png │ │ ├── ch1_28.png │ │ ├── ch1_29.png │ │ ├── ch1_30.png │ │ ├── ch1_31.png │ │ ├── ch1_32.png │ │ ├── ch1_33.png │ │ ├── ch1_34.png │ │ ├── ch1_35.png │ │ ├── ch1_36.png │ │ ├── ch1_37.png │ │ ├── ch1_38.png │ │ ├── ch1_39.png │ │ ├── ch1_40.png │ │ └── ch1_41.png │ ├── ch04_不定积分.md │ └── ch05_定积分及其应用.md ├── 01 - probability theory and mathematical statistics │ ├── ch05_极限定理.md │ ├── ch07_参数估计.md │ └── ch06_数理统计的基本概念.md └── 02 - linear algebra │ └── ch05_线性空间与线性变换.md ├── README.md └── index.py /01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/test.txt: -------------------------------------------------------------------------------- 1 | 1 33 44 -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/La_Tail.txt: -------------------------------------------------------------------------------- 1 | 3 5 8 11 -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/head.txt: -------------------------------------------------------------------------------- 1 | 66 55 44 33 22 11 -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/tail.txt: -------------------------------------------------------------------------------- 1 | 111 222 333 444 555 666 -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/Lb_Tail.txt: -------------------------------------------------------------------------------- 1 | 2 6 8 9 11 15 20 -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/x64/Debug/0201_SqList.tlog/unsuccessfulbuild: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/image/00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/image/00.png -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/image/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/image/01.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_00.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_01.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_02.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_03.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_04.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_05.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_06.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_07.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_08.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_09.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_10.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_11.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_12.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_13.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_14.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_15.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_16.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_17.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_18.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_19.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_20.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_21.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_22.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_23.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_24.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_25.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_26.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_27.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_28.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_29.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_30.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_31.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_32.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_33.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_34.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_35.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_36.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_37.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_38.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_39.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_40.png -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/image/ch1_41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/00 - Math/00 - advanced mathematics/image/ch1_41.png -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0302_Conversion/Conversion-main.c: -------------------------------------------------------------------------------- 1 | #include "Conversion.h" 2 | 3 | 4 | int main(void) { 5 | int i = 33; 6 | Conversion(i); 7 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0304_Maze/Maze.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0304_Maze/Maze.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/image/01-16499471437031.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/image/01-16499471437031.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/image/ch03_02_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/image/ch03_02_01.jpg -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/SqList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/SqList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/Sqlist.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/Sqlist.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/Union.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/Union.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/Union.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/Union.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0306_Hanoi/Hanoi.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0306_Hanoi/Hanoi.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0306_Hanoi/Hanoi.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0306_Hanoi/Hanoi.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/SqList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/SqList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/SqList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/SqList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0304_Maze/Maze-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0304_Maze/Maze-main.c -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_00_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_00_00.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_00_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_00_01.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_00_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_00_02.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_00_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_00_03.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_00_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_00_04.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_00_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_00_05.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_01_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_01_00.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_01_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_01_01.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_01_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_01_02.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch01_01_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch01_01_03.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch02_00_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch02_00_00.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_02_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_02_00.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_02_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_02_01.jpg -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_02_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_02_02.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_02_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_02_03.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_03_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_03_00.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_03_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_03_01.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_03_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_03_02.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_03_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_03_03.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_03_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_03_04.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_03_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_03_05.png -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/old_image/ch03_03_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/00 - Computer composition pricile/old_image/ch03_03_06.png -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/Union-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/Union-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/SqList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/SqList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/SqList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/SqList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/LinkList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/LinkList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/LinkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/LinkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0303_LineEdit/LineEdit.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0303_LineEdit/LineEdit.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0303_LineEdit/LineEdit.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0303_LineEdit/LineEdit.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0308_SqQueue/SqQueue.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0308_SqQueue/SqQueue.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0308_SqQueue/SqQueue.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0308_SqQueue/SqQueue.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0401_SString/SString.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0401_SString/SString.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0402_HString/HString.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0402_HString/HString.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0403_LString/LString.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0403_LString/LString.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/HString.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/HString.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/WordList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/WordList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/WordList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/WordList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/image/image-20220414224202938.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/image/image-20220414224202938.png -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Readme.md: -------------------------------------------------------------------------------- 1 | 先实现一遍代码(纯C),然后再做笔记。 2 | 3 | 4 | 5 | 参考项目地址:https://github.com/kangjianwei/Data-Structure 6 | 7 | 8 | 9 | 所有 *-main.c的项目都在vs2019上测试完成。 10 | 11 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/SqList-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/SqList-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0206_SLinkList/SLinkList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0206_SLinkList/SLinkList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0206_SLinkList/SLinkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0206_SLinkList/SLinkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0209_ElinkList/ELinkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0209_ElinkList/ELinkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0307_LinkQueue/LinkQueue.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0307_LinkQueue/LinkQueue.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0307_LinkQueue/LinkQueue.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0307_LinkQueue/LinkQueue.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0402_HString/HSting-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0402_HString/HSting-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/ELinkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/ELinkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/MergeSqList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/MergeSqList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/MergeSqList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/MergeSqList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/LinkList-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/LinkList-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/LinkList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/LinkList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/LinkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/LinkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/LinkLkList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/LinkLkList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/Difference.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/Difference.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/Difference.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/Difference.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/SLinkList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/SLinkList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/SLinkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/SLinkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0208_DuLinkList/DuLinkList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0208_DuLinkList/DuLinkList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0208_DuLinkList/DuLinkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0208_DuLinkList/DuLinkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/ELinkList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/ELinkList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/ELinkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/ELinkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0305_Expression/Expression.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0305_Expression/Expression.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0305_Expression/Expression.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0305_Expression/Expression.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0308_SqQueue/SqQueue-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0308_SqQueue/SqQueue-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/x64/Debug/vc142.idb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/x64/Debug/vc142.idb -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/x64/Debug/vc142.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/x64/Debug/vc142.pdb -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/MergeLkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/MergeLkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0206_SLinkList/SLinkList-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0206_SLinkList/SLinkList-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0209_ElinkList/ELinkList-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0209_ElinkList/ELinkList-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/ELinkList.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/ELinkList.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/ELinkList.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/ELinkList.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/Pololynomial.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/Pololynomial.h -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0307_LinkQueue/LinkQueue-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0307_LinkQueue/LinkQueue-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/MergeSqList-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/MergeSqList-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0208_DuLinkList/DuLinkList-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0208_DuLinkList/DuLinkList-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/Polynomial-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/Polynomial-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0303_LineEdit/LineEdit-main.c: -------------------------------------------------------------------------------- 1 | #include "LineEdit.h" 2 | 3 | 4 | int main(int argc, char** argv) { 5 | char* buffer = "whli##ilr#e(s#*s)\0"; 6 | LineEdit(buffer); 7 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/MergeSqList-main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/MergeSqList-main.cpp -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/MergeLkList-main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/MergeLkList-main.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0306_Hanoi/Hanoi-main.c: -------------------------------------------------------------------------------- 1 | #include "Hanoi.h" 2 | 3 | 4 | int main(void) { 5 | char x = 'x'; 6 | char y = 'y'; 7 | char z = 'z'; 8 | 9 | hanoi(3, x, y, z); 10 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/MergeELinkList-mian.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/MergeELinkList-mian.c -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/0202_Union.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0302_Conversion/Conversion.h: -------------------------------------------------------------------------------- 1 | #ifndef CONVERSION_H 2 | #define CONVERSION_H 3 | 4 | #include "SqStack.h" 5 | 6 | // 将十进制正整数化为八进制 7 | void Conversion(int i); 8 | 9 | #endif // !CONVERSION_H 10 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0304_Maze/0304_Maze.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0306_Hanoi/0306_Hanoi.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0404_KMP/0404_KMP.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/0201_SqList.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0209_ElinkList/ElinkList.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0301_SqStack/0301_SqStack.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0308_SqQueue/0308_SqQueue.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0401_SString/0401_SString.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0402_HString/0402_HString.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0403_LString/0403_LString.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/x64/Debug/0201_SqList.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inftensor/knowledge_home/HEAD/01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/x64/Debug/0201_SqList.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/0203_MergeList.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/0204_LinkList.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0206_SLinkList/0206_SLinkList.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/0207_Difference.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0208_DuLinkList/0208_DuLinkList.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/0211_Polynomial.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0302_Conversion/0302_Conversion.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0303_LineEdit/0303_LineEdit.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0305_Expression/0305_Expression.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0307_LinkQueue/0307_LinkQueue.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/0405_WordList.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/0205_MergeLkList.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/MergeELinkList.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0305_Expression/Expression-main.c: -------------------------------------------------------------------------------- 1 | #include "Expression.h" 2 | 3 | 4 | int main(int argc, char** argv) { 5 | const char expr[] = "3*(7-2)#"; 6 | printf("%s的计算结果是%d\n", expr, EvaluateExpression(expr)-'0'); 7 | } 8 | 9 | 10 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/MergeELinkList.h: -------------------------------------------------------------------------------- 1 | #ifndef MERGELINKLIST_H 2 | #define MERGELINKLIST_H 3 | 4 | #include "ELinkList.h" 5 | 6 | Status MergeElinkList(ELinkList* La, ELinkList* Lb, ELinkList* Lc, int(Compare)(ElemType e1, ElemType e2)); 7 | 8 | #endif // !MERGELINKLIST_H 9 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0404_KMP/KMP.h: -------------------------------------------------------------------------------- 1 | #ifndef KMP_H 2 | #define KMP_H 3 | 4 | #include "SString.h" 5 | 6 | // KMP模式匹配 7 | int IndexKMP(SString S, SString T, int pos, int next[]); 8 | 9 | 10 | // 求KMP所需的next 11 | void getNext(SString T, int* next); 12 | 13 | void getNextval(SString T, int* nextval); 14 | #endif // !KMP_H 15 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/x64/Debug/0201_SqList.tlog/0201_SqList.lastbuildstate: -------------------------------------------------------------------------------- 1 | PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30133:VCServicingVersionCrtHeaders=14.29.30136:TargetPlatformVersion=10.0.19041.0: 2 | Debug|x64|E:\GITHUB_HOME\MyWorkHome\knowledge_home\01 - 408\01 - Data Structure\Code\CourceBook\| 3 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/Difference-main.c: -------------------------------------------------------------------------------- 1 | #include "Difference.h" 2 | 3 | void PrintElem(ElemType e) { 4 | printf("%d ", e); 5 | } 6 | 7 | int main(int garc, char** argv) { 8 | int a[5] = { 1, 2, 3, 4, 5 }; 9 | int b[5] = { 2, 4, 6, 8, 10 }; 10 | SLinkList space; 11 | int S; 12 | 13 | Difference(space, &S, a, 5, b, 5); 14 | printf("(A-B)U(B-A)="); 15 | SLinkListTraverse(space, S, PrintElem); 16 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/Status/Status.h: -------------------------------------------------------------------------------- 1 | #ifndef STATUS_H 2 | #define STATUS_H 3 | 4 | 5 | #include 6 | 7 | 8 | /* 9 | 定义状态码 10 | */ 11 | #define TRUE 1 // 真/是 12 | #define FALSE 0 // 假/否 13 | #define OK 1 // 通过/成功 14 | #define ERROR 0 // 错误/失败 15 | #define INFEARIBLE -1 // 下溢 16 | #define OVERFLOW -2 // 堆栈上溢 17 | 18 | typedef int Status; // Status 是函数的类型,返回函数结果的状态代码 19 | 20 | #endif -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/x64/Debug/0201_SqList.log: -------------------------------------------------------------------------------- 1 | SqList-main.c 2 | E:\GITHUB_HOME\MyWorkHome\knowledge_home\01 - 408\01 - Data Structure\Code\CourceBook\0201_SqList\SqList.h(6,10): fatal error C1083: 无法打开包括文件: “Status.h”: No such file or directory 3 | SqList.c 4 | E:\GITHUB_HOME\MyWorkHome\knowledge_home\01 - 408\01 - Data Structure\Code\CourceBook\0201_SqList\SqList.h(6,10): fatal error C1083: 无法打开包括文件: “Status.h”: No such file or directory 5 | 正在生成代码... 6 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0302_Conversion/Conversion.c: -------------------------------------------------------------------------------- 1 | #include "Conversion.h" 2 | 3 | 4 | void Conversion(int i) { 5 | // 短除法 6 | SqStack S; 7 | SElemType e; 8 | InitSqStack(&S); 9 | 10 | printf("十进制数%d转为八进制为:", i); 11 | while (i) { 12 | SqStackPush(&S, i % 8); 13 | i /= 8; 14 | } 15 | while (!SqStackEmpty(S)) { 16 | SqStackPop(&S, &e); 17 | printf("%d", e); 18 | } 19 | 20 | // 用完即删 21 | DestroySqStack(&S); 22 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/ReadMe.md: -------------------------------------------------------------------------------- 1 | 使用方法: 2 | 3 | 1. VS2019加载解决方案 4 | 5 | 文件->打开->项目/解决方案,选择CourceBook.sln 6 | 7 | 2. 设置编译目录 8 | 9 | - 选中项目 10 | 11 | ![00](image/00.png) 12 | 13 | - 点击属性->VC++目录->包含目录->编辑 14 | 15 | ​ 输入:$(SolutionDir)..\Status 16 | 17 | > 因为所有项目共用Status,所以这样导入 18 | 19 | ![01](image/01.png) 20 | 21 | - 仍然是属性->C/C++->常规->附加包含目录: 22 | 23 | 输入:$(SolutionDir)..\Status 24 | 25 | ![image-20220414224202938](image/image-20220414224202938.png) 26 | 27 | 28 | 29 | 3. 运行 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # knowledge_home 2 | 本项目主要记录自己的学习过程,当前施工范围是数学(数学一)和计算机(408)相关知识,用于备考2023年研究生。 3 | 4 | 数学与计算机同时施工,计划5月底完成。 5 | 6 | 更新日志: 7 | 8 | 2021.03.05: 9 | 10 | 更新ch1的函数极限知识 11 | 12 | 2021.03.08: 13 | 14 | 更新高数ch2导数与微分和ch3微分中值定理与导数应用 15 | 16 | 17 | 2021.03.11 18 | 19 | 更新不定积分、定积分以及微分方程部分 20 | 21 | 22 | 2021.03.15 23 | 24 | 更新向量代数与空间解析几何 25 | 26 | 27 | 2021.03.17 28 | 29 | 更新计组前三章 30 | 31 | 2021.03.30 32 | 33 | 高数部分更新完成 34 | 35 | 2021.04.02 36 | 37 | 计组第四章更新完成 38 | 39 | 2021.04.04 40 | 41 | 计组第五章更新完成 42 | 43 | 2021.04.06 44 | 45 | 计组第6章更新完成 46 | 47 | 2021.04.08 48 | 49 | 计组6.7章更新完成 50 | 51 | 2021.04.09 52 | 53 | 计组更新完成 54 | 55 | 2021.04.14 56 | 57 | 更新数据结构前四章代码(纯c实现) 58 | 59 | 2021.04.18 60 | 61 | 更新完成概率论 62 | 63 | 2021.04.27 64 | 65 | 更新完成线性代数 66 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0301_SqStack/SqStack-main.c: -------------------------------------------------------------------------------- 1 | #include "SqStack.h" 2 | 3 | 4 | // 打印元素 5 | void PrintEem(SElemType e) { 6 | printf("%d ", e); 7 | } 8 | 9 | 10 | int main(int argc, char** argv) { 11 | SqStack S; 12 | int i; 13 | SElemType e; 14 | 15 | // 初始化测试 16 | InitSqStack(&S); 17 | // 判空测试 18 | printf("S是否为空?%d\n", SqStackEmpty(S)); 19 | 20 | // Push测试 21 | for (i = 0; i < 10; i++) { 22 | SqStackPush(&S, i * i); 23 | } 24 | printf("S = "); 25 | SqStackTraverse(S, PrintEem); 26 | // 长度测试 27 | printf("S的长度为%d\n", SqStackLength(S)); 28 | // 栈顶测试 29 | GetSqStackTop(S, &e); 30 | printf("栈顶元素为%d\n", e); 31 | 32 | // 出栈测试 33 | while (!SqStackEmpty(S)) { 34 | SqStackPop(&S, &e); 35 | printf("当前弹出%d\n", e); 36 | } 37 | 38 | 39 | } -------------------------------------------------------------------------------- /index.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | 5 | def get_all_children_file_name(root_path, f, level, flag): 6 | """ 7 | :param root_path: 8 | :param f: 9 | :param level: 10 | :param flag: 是否输出隐藏的文件,默认隐藏 11 | :return: 12 | """ 13 | for path in os.listdir(root_path): 14 | if path.startswith(".") and flag: 15 | continue 16 | f.writelines(f"{'| '*level}"+"|--"+path+"\n") 17 | curr_path = os.path.join(root_path, path) 18 | if os.path.isdir(curr_path): 19 | get_all_children_file_name(curr_path, f, level+1, flag) 20 | 21 | 22 | if __name__ == '__main__': 23 | root_path = os.getcwd() 24 | flag = int(sys.argv[-1]) if len(sys.argv) > 2 else 1 25 | with open(os.path.join(root_path, "index.txt"), "w", encoding='utf-8') as f: 26 | f.writelines(".\n") 27 | get_all_children_file_name(root_path, f, level=0, flag=flag) -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0301_SqStack/SqStack.h: -------------------------------------------------------------------------------- 1 | #ifndef SQSTACK_H 2 | #define SQSTACK_H 3 | 4 | #include "Status.h" 5 | #include 6 | 7 | #define STACK_INIT_SIZE 100 // 栈初始空间 8 | #define STACKINCREMENT 10 // 增量 9 | 10 | typedef int SElemType; 11 | 12 | typedef struct { 13 | SElemType *base; // 栈底 14 | SElemType *top; // 栈顶 15 | int stacksize; // 已分配存储空间 16 | } SqStack; 17 | 18 | // 初始化 19 | Status InitSqStack(SqStack* S); 20 | 21 | // 销毁 22 | Status DestroySqStack(SqStack *S); 23 | 24 | // 置空 25 | Status ClearSqStack(SqStack* S); 26 | 27 | // 判空 28 | Status SqStackEmpty(SqStack S); 29 | 30 | // 长度 31 | int SqStackLength(SqStack S); 32 | 33 | // 栈顶元素 34 | Status GetSqStackTop(SqStack S, SElemType* e); 35 | 36 | // 入栈 37 | Status SqStackPush(SqStack* S, SElemType e); 38 | 39 | // 出栈 40 | Status SqStackPop(SqStack* S, SElemType* e); 41 | 42 | // 遍历 43 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)); 44 | 45 | #endif -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0302_Conversion/SqStack.h: -------------------------------------------------------------------------------- 1 | #ifndef SQSTACK_H 2 | #define SQSTACK_H 3 | 4 | #include "Status.h" 5 | #include 6 | 7 | #define STACK_INIT_SIZE 100 // 栈初始空间 8 | #define STACKINCREMENT 10 // 增量 9 | 10 | typedef int SElemType; 11 | 12 | typedef struct { 13 | SElemType *base; // 栈底 14 | SElemType *top; // 栈顶 15 | int stacksize; // 已分配存储空间 16 | } SqStack; 17 | 18 | // 初始化 19 | Status InitSqStack(SqStack* S); 20 | 21 | // 销毁 22 | Status DestroySqStack(SqStack *S); 23 | 24 | // 置空 25 | Status ClearSqStack(SqStack* S); 26 | 27 | // 判空 28 | Status SqStackEmpty(SqStack S); 29 | 30 | // 长度 31 | int SqStackLength(SqStack S); 32 | 33 | // 栈顶元素 34 | Status GetSqStackTop(SqStack S, SElemType* e); 35 | 36 | // 入栈 37 | Status SqStackPush(SqStack* S, SElemType e); 38 | 39 | // 出栈 40 | Status SqStackPop(SqStack* S, SElemType* e); 41 | 42 | // 遍历 43 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)); 44 | 45 | #endif -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0303_LineEdit/SqStack.h: -------------------------------------------------------------------------------- 1 | #ifndef SQSTACK_H 2 | #define SQSTACK_H 3 | 4 | #include "Status.h" 5 | #include 6 | 7 | #define STACK_INIT_SIZE 100 // 栈初始空间 8 | #define STACKINCREMENT 10 // 增量 9 | 10 | typedef int SElemType; 11 | 12 | typedef struct { 13 | SElemType *base; // 栈底 14 | SElemType *top; // 栈顶 15 | int stacksize; // 已分配存储空间 16 | } SqStack; 17 | 18 | // 初始化 19 | Status InitSqStack(SqStack* S); 20 | 21 | // 销毁 22 | Status DestroySqStack(SqStack *S); 23 | 24 | // 置空 25 | Status ClearSqStack(SqStack* S); 26 | 27 | // 判空 28 | Status SqStackEmpty(SqStack S); 29 | 30 | // 长度 31 | int SqStackLength(SqStack S); 32 | 33 | // 栈顶元素 34 | Status GetSqStackTop(SqStack S, SElemType* e); 35 | 36 | // 入栈 37 | Status SqStackPush(SqStack* S, SElemType e); 38 | 39 | // 出栈 40 | Status SqStackPop(SqStack* S, SElemType* e); 41 | 42 | // 遍历 43 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)); 44 | 45 | #endif -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0305_Expression/SqStack.h: -------------------------------------------------------------------------------- 1 | #ifndef SQSTACK_H 2 | #define SQSTACK_H 3 | 4 | #include "Status.h" 5 | #include 6 | 7 | #define STACK_INIT_SIZE 100 // 栈初始空间 8 | #define STACKINCREMENT 10 // 增量 9 | 10 | typedef char SElemType; 11 | 12 | typedef struct { 13 | SElemType *base; // 栈底 14 | SElemType *top; // 栈顶 15 | int stacksize; // 已分配存储空间 16 | } SqStack; 17 | 18 | // 初始化 19 | Status InitSqStack(SqStack* S); 20 | 21 | // 销毁 22 | Status DestroySqStack(SqStack *S); 23 | 24 | // 置空 25 | Status ClearSqStack(SqStack* S); 26 | 27 | // 判空 28 | Status SqStackEmpty(SqStack S); 29 | 30 | // 长度 31 | int SqStackLength(SqStack S); 32 | 33 | // 栈顶元素 34 | Status GetSqStackTop(SqStack S, SElemType* e); 35 | 36 | // 入栈 37 | Status SqStackPush(SqStack* S, SElemType e); 38 | 39 | // 出栈 40 | Status SqStackPop(SqStack* S, SElemType* e); 41 | 42 | // 遍历 43 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)); 44 | 45 | #endif -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0404_KMP/KMP-main.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "KMP.h" 3 | 4 | // 打印字符串 5 | void PrintElem(SString S) { 6 | int i; 7 | for (i = 1; i <= S[0]; i++) { 8 | printf("%c", S[i]); 9 | } 10 | 11 | printf("\n"); 12 | } 13 | 14 | 15 | int main(void) { 16 | char words[] = "aaabaaaab"; 17 | char values[] = "aaaab"; 18 | int len_words = sizeof(words) / sizeof(char) -1; // 减1是因为c还算了 '\0' 19 | int len_values = sizeof(values) / sizeof(char) -1; 20 | 21 | //int next[len_values + 1]; 22 | int* next = (int*)malloc(sizeof(char) * (len_values + 1)); // KMP所需的next 23 | SString S, V; 24 | int j; 25 | 26 | // 初始化 27 | AssignSString(S, words, len_words); 28 | AssignSString(V, values, len_values); 29 | printf("S = "); 30 | PrintElem(S); 31 | printf("V = "); 32 | PrintElem(V); 33 | 34 | // 给出next 35 | //getNext(V, next); 36 | getNextval(V, next); 37 | printf("next = "); 38 | for (j = 1; j <= len_values; j++) { 39 | printf("%d ", next[j]); 40 | } 41 | printf("\n"); 42 | 43 | printf("V在S的%d", IndexKMP(S, V, 1, next)); 44 | free(next); 45 | return 0; 46 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0304_Maze/SqStack.h: -------------------------------------------------------------------------------- 1 | #ifndef SQSTACK_H 2 | #define SQSTACK_H 3 | 4 | #include "Status.h" 5 | #include 6 | 7 | #define STACK_INIT_SIZE 100 // 栈初始空间 8 | #define STACKINCREMENT 10 // 增量 9 | 10 | 11 | 12 | typedef struct { // 通道的横纵坐标 13 | int x; 14 | int y; 15 | } PosType; 16 | 17 | typedef struct{ 18 | int ord; // 通道块的序号 19 | PosType seat; // 通道块的坐标 20 | int di; // 下一个访问的坐标 21 | } SElemType; 22 | 23 | typedef struct { 24 | SElemType *base; // 栈底 25 | SElemType *top; // 栈顶 26 | int stacksize; // 已分配存储空间 27 | } SqStack; 28 | 29 | // 初始化 30 | Status InitSqStack(SqStack* S); 31 | 32 | // 销毁 33 | Status DestroySqStack(SqStack *S); 34 | 35 | // 置空 36 | Status ClearSqStack(SqStack* S); 37 | 38 | // 判空 39 | Status SqStackEmpty(SqStack S); 40 | 41 | // 长度 42 | int SqStackLength(SqStack S); 43 | 44 | // 栈顶元素 45 | Status GetSqStackTop(SqStack S, SElemType* e); 46 | 47 | // 入栈 48 | Status SqStackPush(SqStack* S, SElemType e); 49 | 50 | // 出栈 51 | Status SqStackPop(SqStack* S, SElemType* e); 52 | 53 | // 遍历 54 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)); 55 | 56 | #endif -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0403_LString/0403_LString.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 23 | 24 | 头文件 25 | 26 | 27 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0404_KMP/KMP.c: -------------------------------------------------------------------------------- 1 | #include "KMP.h" 2 | 3 | 4 | // KMP模式匹配 5 | int IndexKMP(SString S, SString T, int pos, int next[]) { 6 | // 确保合理 7 | if (pos <1 || pos > S[0] ) { 8 | return 0; 9 | } 10 | int i = pos; 11 | int j = 1; 12 | while (i <= S[0] && j <= T[0]) { 13 | if (j == 0 || S[i] == T[j]) { // 匹配成功 14 | i++; 15 | j++; 16 | } else { // 匹配失败,j后移 17 | j = next[j]; 18 | } 19 | } 20 | if (j > T[0]) { // 已经找到 21 | return i - T[0]; 22 | } 23 | return 0; // 未找到 24 | } 25 | 26 | // 求KMP所需的next 27 | void getNext(SString T, int* next) { 28 | int i = 1; 29 | int j = 0; 30 | 31 | next[1] = 0; // 第一个失效 32 | while (i < T[0]) { 33 | if (j == 0 || T[i] == T[j]) { 34 | i++; 35 | j++; 36 | next[i] = j; 37 | } else { 38 | j = next[j]; 39 | } 40 | } 41 | return; 42 | } 43 | 44 | void getNextval(SString T, int* nextval) { 45 | int i = 1; 46 | int j = 0; 47 | nextval[1] = 0; 48 | while (i < T[0]) { 49 | if (j == 0 || T[i] == T[j]) { 50 | i++; 51 | j++; 52 | if (T[i] != T[j]) { 53 | nextval[i] = j; 54 | } else { 55 | nextval[i] = nextval[j]; 56 | } 57 | } else { 58 | j = nextval[j]; 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0404_KMP/SString.h: -------------------------------------------------------------------------------- 1 | #ifndef SSTRING_H 2 | #define SSTRING_H 3 | 4 | #include "Status.h" 5 | 6 | #define MAXSTRLEN 255 // 顺序串的最大长度 7 | 8 | typedef unsigned char SString[MAXSTRLEN+1]; 9 | 10 | // 初始化 11 | Status AssignSString(SString T, const char* words, int len_words); 12 | 13 | // // 销毁 14 | // Status DestorySString(SString S); 15 | 16 | // 置空 17 | Status ClearSString(SString S); 18 | 19 | // 判空 20 | Status SStringEmpty(SString S); 21 | 22 | // 长度 23 | int SStringLength(SString S); 24 | 25 | // 子串 26 | Status SubSString(SString Sub, SString S, int pos, int len); 27 | 28 | // 首次出现(依赖子串) 29 | int IndexOfSString1(SString S, SString T, int pos); 30 | 31 | // 首次出现(不依赖子串) 32 | int IndexOfSString2(SString S, SString T, int pos); 33 | 34 | // 插入 35 | Status SStringInsert(SString S, int pos, SString T); 36 | 37 | // 删除 38 | Status SStringDelete(SString S, int pos, int len); 39 | 40 | // 比较串 41 | int SStringCmp(SString S, SString T); 42 | 43 | // 复制 44 | Status SStringCopy(SString T, SString S); 45 | 46 | // 替换 47 | Status SStringReplace(SString S, SString T, SString V); 48 | 49 | // 连接 50 | Status SStringConcat(SString T, SString S1, SString S2); 51 | 52 | #endif // !SSTRING_H 53 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0306_Hanoi/0306_Hanoi.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 源文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0201_SqList/0201_SqList.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 源文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0301_SqStack/0301_SqStack.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 头文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0308_SqQueue/0308_SqQueue.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 源文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0401_SString/0401_SString.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 源文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0402_HString/0402_HString.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 头文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0209_ElinkList/ElinkList.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 头文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0206_SLinkList/0206_SLinkList.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 源文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0307_LinkQueue/0307_LinkQueue.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 源文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0208_DuLinkList/0208_DuLinkList.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 头文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0401_SString/SString-main.c: -------------------------------------------------------------------------------- 1 | #include "SString.h" 2 | 3 | // 遍历 4 | void PrintElme(SString S) { 5 | int i; 6 | for (i=1; i<=S[0]; i++) { 7 | printf("%c", S[i]); 8 | } 9 | printf("\n"); 10 | } 11 | 12 | int main(int argc, char** argv) { 13 | SString S, Sub, V; 14 | // 初始化测试 15 | char words[] = "hello word!"; 16 | AssignSString(S, words, sizeof(words)/sizeof(char)-1); 17 | PrintElme(S); 18 | char values[] = "or"; 19 | AssignSString(V, values, sizeof(values) / sizeof(char) - 1); 20 | 21 | // 判空测试 22 | printf("是否为空?%d\n", SStringEmpty(S)); 23 | 24 | // 长度测试 25 | printf("长度为%d\n", SStringLength(S)); 26 | 27 | // 子串测试 28 | SubSString(Sub, S, 1, 5); 29 | printf("S%d到%d的子串为:", 1, 5); 30 | PrintElme(Sub); 31 | 32 | // 首次出现测试 33 | printf("V在S中首次出现为%d", IndexOfSString1(S, V, 1)); 34 | 35 | // 插入测试 36 | SStringInsert(S, 1, V); 37 | printf("当前的S = "); 38 | PrintElme(S); 39 | // 删除测试 40 | SStringDelete(S, 1, 2); 41 | printf("当前的S = "); 42 | PrintElme(S); 43 | 44 | // 替换测试 45 | SStringReplace(S, Sub, V); 46 | printf("替换后,S = "); 47 | PrintElme(S); 48 | 49 | // 连接测试 50 | printf("Sub = "); 51 | PrintElme(Sub); 52 | SStringConcat(S, Sub, V); 53 | printf("连接后,S = "); 54 | PrintElme(S); 55 | 56 | // 置空测试 57 | ClearSString(S); 58 | printf("是否为空?%d\n", SStringEmpty(S)); 59 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0404_KMP/0404_KMP.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 26 | 27 | 源文件 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0304_Maze/0304_Maze.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 26 | 27 | 源文件 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0202_Union/0202_Union.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 26 | 27 | 源文件 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/MergeELinkList.c: -------------------------------------------------------------------------------- 1 | #include "MergeELinkList.h" 2 | 3 | 4 | Status MergeElinkList(ELinkList* La, ELinkList* Lb, ELinkList* Lc, int(Compare)(ElemType e1, ElemType e2)) { 5 | ELink ha, hb, q; 6 | EPosition pa, pb; 7 | ElemType a, b; 8 | 9 | // 分配存储空间 10 | if (!InitELinkList(Lc)) { 11 | return ERROR; // 分配失败 12 | } 13 | 14 | ha = GetElinkListHead(*La); 15 | hb = GetElinkListHead(*Lb); 16 | 17 | // 确保La和Lb为有效链表 18 | if (!ha || !hb) { 19 | return ERROR; 20 | } 21 | 22 | pa = ELinkListNextPos(*La, ha); 23 | pb = ELinkListNextPos(*Lb, hb); 24 | 25 | while (pa && pb) { 26 | a = GetELinkListCurElem(pa); 27 | b = GetELinkListCurElem(pb); 28 | 29 | if (Compare(a,b) <=0) { 30 | // 从La中摘下首个元素 31 | ELinkListDeleteFirst(La, ha, &q); 32 | // 插入到Lc 33 | ELinkListAppend(Lc, q); 34 | pa = ELinkListNextPos(*La, ha); 35 | } else { 36 | ELinkListDeleteFirst(Lb, hb, &q); 37 | ELinkListAppend(Lc, q); 38 | pb = ELinkListNextPos(*Lb, hb); 39 | } 40 | } 41 | // 把L_a,L_b剩下的插入 42 | pa ? ELinkListAppend(Lc, pa) : ELinkListAppend(Lc, pb); 43 | 44 | // 释放节点 45 | FreeNode(&(La->head)); 46 | FreeNode(&(Lb->head)); 47 | La->tail = NULL; 48 | Lb->tail = NULL; 49 | La->len = 0; 50 | Lb->len = 0; 51 | return OK; 52 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0303_LineEdit/0303_LineEdit.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 26 | 27 | 源文件 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0203_MergeList/0203_MergeList.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 26 | 27 | 源文件 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0302_Conversion/0302_Conversion.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 26 | 27 | 源文件 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0305_Expression/0305_Expression.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 26 | 27 | 源文件 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0207_Difference/0207_Difference.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 26 | 27 | 28 | 29 | 30 | 头文件 31 | 32 | 33 | 头文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/0211_Polynomial.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 26 | 27 | 28 | 29 | 30 | 头文件 31 | 32 | 33 | 头文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0210_MergeELinkList/MergeELinkList.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 26 | 27 | 28 | 29 | 30 | 头文件 31 | 32 | 33 | 头文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/0405_WordList.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | 源文件 37 | 38 | 39 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0204_LinkList/0204_LinkList.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 源文件 28 | 29 | 30 | 31 | 32 | 资源文件 33 | 34 | 35 | 资源文件 36 | 37 | 38 | 资源文件 39 | 40 | 41 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0205_MergeLkList/0205_MergeLkList.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 26 | 27 | 源文件 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | 37 | 38 | 资源文件 39 | 40 | 41 | 资源文件 42 | 43 | 44 | -------------------------------------------------------------------------------- /00 - Math/01 - probability theory and mathematical statistics/ch05_极限定理.md: -------------------------------------------------------------------------------- 1 | # 1. 极限定理的概念和意义 2 | > @Definition 3 | > **定义1.1** 设随机变量序列 $\{ X_n, n=1,2,\cdots\}$ , 对随机变量 $X$ 和任意实数 $\varepsilon > 0$ , 如果有 4 | > $$ 5 | > \lim_{n\to +\infty} P\{|X_n-X|< \varepsilon \} = 1 6 | > $$ 7 | > 则称随机变量序列 $X_n$ 依概率收敛于变量 $X$, 简记为 $X_n \stackrel{P}{\overrightarrow{n\to+\infty}} X$ 8 | 9 | 10 | > @Definition 11 | > **定义1.2** 设随机变量序列 $\{X_n, n=1,2,\cdots\}$ 和 $X$ 的分布函数分别为 $F_n(x), F(x)$。对任意实数 $x$ , 如果有 $\lim_{n\to+\infty}F_n(x) = F(x)$, 则称随机变量 序列 $\{X_n\}$ 依分布收敛于随机变量 $X$ ,简记为 $X_n \stackrel{L}{\overrightarrow{n\to +\infty}} X$ 12 | 13 | 14 | 基本的极限定理分为两类,一类称为大数定律,它反映的是序列 $\{X_n\}$ 的前有限项的算数平均的变化趋势; 15 | 另一类称为中心极限定理,该定理表明,在一般的条件下,正太分布是很重要的极限分布。 16 | 17 | 18 | 19 | # 2. 大数定律 20 | 21 | > @Theorem 22 | > **定理2.1(切比雪夫大数定律)** 设相互独立的随机变量序列 $\{X_i\}, EX_i, D_i (i=1,2,\cdots)$ 都存在,并且存在常数 $C$ ,使得 $DX_i\le C(i=1,2,\cdots)$, 则对任意的实数 $\varepsilon>0$,有 23 | > $$ 24 | > \lim_{n\to+\infty}P\{|\overline{X_n}-E\overline{X_n}|<\varepsilon\} =1 25 | > $$ 26 | > 其中 $\overline{X_n} = \frac{1}{n}\sum_{i=1}^nX_i$ 27 | 28 | > @Theorem 29 | > **定理2.2(辛钦大数定律)** 设 $\{X_i\}$ 为独立同分布的随机变量序列, $EX_i,DX_i(i=1,2,\cdots)$ 都存在, 令 $EX_i = \mu, DX_i = \sigma^2 (i-1,2,\cdots)$ ,则对任意的实数 $\varepsilon>0$,有 30 | > $$ 31 | > \lim_{n\to+\infty}P\{|\overline{X_n}-\mu|<\varepsilon\} =1 32 | > $$ 33 | > 即 $\overline{X_n} = \frac{1}{n}\sum_{i=1}^nX_i$ 依概率收敛于 $\mu$, 记为 $\overline{X_n} \stackrel{P}{\overrightarrow{n\to+\infty}} \mu$ 34 | 35 | > @Theorem 36 | > **定理2.3(伯努利大数定律)** 设$\{X_i\}$ 为独立同分布的随机变量序列,且 $X_i\sim B(1,p), i=1,2,\cdots$,记$\mu_n=\sum_{i=1}^nX_i$,则对任意的实数 $\varepsilon>0$,有 37 | > $$ 38 | > \lim_{n\to+\infty}P\{|\frac{\mu_n}{n}-p|<\varepsilon\} =1 39 | > $$ 40 | > 即 $\frac{\mu_n}{n}\stackrel{P}{\overrightarrow{n\to+\infty}} p$ 41 | 42 | # 3.中心极限定理 43 | > @Theorem 44 | > **定理3.1(独立同分布的中心极限定理)** 设 $\{X_i\}$ 为独立同分布的随机变量序列,$EX_i,DX_i(i=1,2,\cdots)$都存在,令 $EX_i=\mu, DX_i=\sigma^2(i=1,2,\cdots)$, 则对任意的实数 $x$ ,有 45 | > $$ 46 | > \lim_{n\to +\infty } P\{\frac{\overline{X_n}-\mu}{\sigma / \sqrt{n}} \le x \} = \Phi(x) 47 | > $$ 48 | > 其中, $\overline{X_n} \frac{1}{n} \sum_{i=1}^n X_i$, $\Phi(x)$ 为标准正太分布 $N(0,1)$ 的分布函数。 49 | > 称 $\overline{X_n}$ 依分布收敛于正态分布 $N(\mu, \frac{\sigma^2}{n})$ 50 | 51 | > @Theorem 52 | > **定理3.2(棣莫弗-拉普拉斯定理)** 设 $\{X_i\}$ 为独立同分布的随机变量序列,且 $X_i\sim B(1,p)(i=1,2,\cdots)$ ,令 $Y_n = \sum_{i=1}^nX_i$, 则对任意实数 $x$, 有 53 | > $$ 54 | > \lim_{n\to+\infty} P\{\frac{Y_n-np}{\sqrt{np(1-p)}} \le x\} = \Phi(x) 55 | > $$ 56 | 57 | 58 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0304_Maze/SqStack.c: -------------------------------------------------------------------------------- 1 | #include "SqStack.h" 2 | 3 | 4 | // 初始化 5 | Status InitSqStack(SqStack* S) { 6 | // 确保存在 7 | if (!S) { 8 | return ERROR; 9 | } 10 | S->base = (SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); 11 | if (!S->base) { 12 | // 内存分配失败 13 | exit(OVERFLOW); 14 | } 15 | 16 | S->top = S->base; 17 | S->stacksize = STACK_INIT_SIZE; 18 | return OK; 19 | } 20 | 21 | // 销毁 22 | Status DestroySqStack(SqStack *S) { 23 | // 确保存在 24 | if (!S) { 25 | return ERROR; 26 | } 27 | 28 | free(S->base); 29 | S->base = S->top = NULL; 30 | S->stacksize = 0; 31 | return OK; 32 | } 33 | 34 | // 置空 35 | Status ClearSqStack(SqStack* S) { 36 | // 确保存在 37 | if (!S || !S->base) { 38 | return ERROR; 39 | } 40 | 41 | S->top = S->base; 42 | return OK; 43 | } 44 | 45 | 46 | // 判空 47 | Status SqStackEmpty(SqStack S) { 48 | // 确保存在 49 | if (!S.base) { 50 | return ERROR; 51 | } 52 | 53 | return S.top==S.base ? TRUE : FALSE; 54 | } 55 | 56 | 57 | // 长度 58 | int SqStackLength(SqStack S) { 59 | // 确保存在 60 | if (!S.base) { 61 | return 0; 62 | } 63 | return (int)(S.top-S.base); 64 | } 65 | 66 | // 栈顶元素 67 | Status GetSqStackTop(SqStack S, SElemType* e) { 68 | // 确保存在且不为空 69 | if (!S.base || S.top==S.base) { 70 | return ERROR; 71 | } 72 | *e = *(S.top-1); 73 | return OK; 74 | } 75 | 76 | 77 | // 入栈 78 | Status SqStackPush(SqStack* S, SElemType e) { 79 | // 确保存在 80 | if (!S || !S->base) { 81 | return ERROR; 82 | } 83 | // 栈满时,扩容 84 | if (S->top-S->base >= S->stacksize) { 85 | S->base = (SElemType*)realloc(S->base, (S->stacksize+STACKINCREMENT)*sizeof(SElemType)); 86 | if (!S->base) { 87 | exit(OVERFLOW); 88 | } 89 | 90 | S->top = S->base + S->stacksize; 91 | S->stacksize += STACKINCREMENT; 92 | } 93 | // 入栈先赋值,栈顶指针再移动 94 | *(S->top++) = e; 95 | return OK; 96 | } 97 | 98 | 99 | // 出栈 100 | Status SqStackPop(SqStack* S, SElemType* e) { 101 | // 确保不为空 102 | if (!S || !S->base || S->base==S->top) { 103 | return ERROR; 104 | } 105 | // 出栈先移动指针,在赋值 106 | *e = *(--S->top); 107 | } 108 | 109 | // 遍历 110 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)) { 111 | // 确保存在 112 | if (!S.base || S.base==S.top) { 113 | return ERROR; 114 | } 115 | 116 | SElemType* p = S.base; 117 | while (p < S.top) { 118 | Visit(*p++); 119 | } 120 | printf("\n"); 121 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0301_SqStack/SqStack.c: -------------------------------------------------------------------------------- 1 | #include "SqStack.h" 2 | 3 | 4 | // 初始化 5 | Status InitSqStack(SqStack* S) { 6 | // 确保存在 7 | if (!S) { 8 | return ERROR; 9 | } 10 | S->base = (SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); 11 | if (!S->base) { 12 | // 内存分配失败 13 | exit(OVERFLOW); 14 | } 15 | 16 | S->top = S->base; 17 | S->stacksize = STACK_INIT_SIZE; 18 | return OK; 19 | } 20 | 21 | // 销毁 22 | Status DestroySqStack(SqStack *S) { 23 | // 确保存在 24 | if (!S) { 25 | return ERROR; 26 | } 27 | 28 | free(S->base); 29 | S->base = S->top = NULL; 30 | S->stacksize = 0; 31 | return OK; 32 | } 33 | 34 | // 置空 35 | Status ClearSqStack(SqStack* S) { 36 | // 确保存在 37 | if (!S || !S->base) { 38 | return ERROR; 39 | } 40 | 41 | S->top = S->base; 42 | return OK; 43 | } 44 | 45 | 46 | // 判空 47 | Status SqStackEmpty(SqStack S) { 48 | // 确保存在 49 | if (!S.base) { 50 | return ERROR; 51 | } 52 | 53 | return S.top==S.base ? TRUE : FALSE; 54 | } 55 | 56 | 57 | // 长度 58 | int SqStackLength(SqStack S) { 59 | // 确保存在 60 | if (!S.base) { 61 | return 0; 62 | } 63 | return (int)(S.top-S.base); 64 | } 65 | 66 | // 栈顶元素 67 | Status GetSqStackTop(SqStack S, SElemType* e) { 68 | // 确保存在且不为空 69 | if (!S.base || S.top==S.base) { 70 | return ERROR; 71 | } 72 | *e = *(S.top-1); 73 | return OK; 74 | } 75 | 76 | 77 | // 入栈 78 | Status SqStackPush(SqStack* S, SElemType e) { 79 | // 确保存在 80 | if (!S || !S->base) { 81 | return ERROR; 82 | } 83 | // 栈满时,扩容 84 | if (S->top-S->base >= S->stacksize) { 85 | S->base = (SElemType*)realloc(S->base, (S->stacksize+STACKINCREMENT)*sizeof(SElemType)); 86 | if (!S->base) { 87 | exit(OVERFLOW); 88 | } 89 | 90 | S->top = S->base + S->stacksize; 91 | S->stacksize += STACKINCREMENT; 92 | } 93 | // 入栈先赋值,栈顶指针再移动 94 | *(S->top++) = e; 95 | return OK; 96 | } 97 | 98 | 99 | // 出栈 100 | Status SqStackPop(SqStack* S, SElemType* e) { 101 | // 确保不为空 102 | if (!S || !S->base || S->base==S->top) { 103 | return ERROR; 104 | } 105 | // 出栈先移动指针,在赋值 106 | *e = *(--S->top); 107 | } 108 | 109 | // 遍历 110 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)) { 111 | // 确保存在 112 | if (!S.base || S.base==S.top) { 113 | return ERROR; 114 | } 115 | 116 | SElemType* p = S.base; 117 | while (p < S.top) { 118 | Visit(*p++); 119 | } 120 | printf("\n"); 121 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0303_LineEdit/SqStack.c: -------------------------------------------------------------------------------- 1 | #include "SqStack.h" 2 | 3 | 4 | // 初始化 5 | Status InitSqStack(SqStack* S) { 6 | // 确保存在 7 | if (!S) { 8 | return ERROR; 9 | } 10 | S->base = (SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); 11 | if (!S->base) { 12 | // 内存分配失败 13 | exit(OVERFLOW); 14 | } 15 | 16 | S->top = S->base; 17 | S->stacksize = STACK_INIT_SIZE; 18 | return OK; 19 | } 20 | 21 | // 销毁 22 | Status DestroySqStack(SqStack *S) { 23 | // 确保存在 24 | if (!S) { 25 | return ERROR; 26 | } 27 | 28 | free(S->base); 29 | S->base = S->top = NULL; 30 | S->stacksize = 0; 31 | return OK; 32 | } 33 | 34 | // 置空 35 | Status ClearSqStack(SqStack* S) { 36 | // 确保存在 37 | if (!S || !S->base) { 38 | return ERROR; 39 | } 40 | 41 | S->top = S->base; 42 | return OK; 43 | } 44 | 45 | 46 | // 判空 47 | Status SqStackEmpty(SqStack S) { 48 | // 确保存在 49 | if (!S.base) { 50 | return ERROR; 51 | } 52 | 53 | return S.top==S.base ? TRUE : FALSE; 54 | } 55 | 56 | 57 | // 长度 58 | int SqStackLength(SqStack S) { 59 | // 确保存在 60 | if (!S.base) { 61 | return 0; 62 | } 63 | return (int)(S.top-S.base); 64 | } 65 | 66 | // 栈顶元素 67 | Status GetSqStackTop(SqStack S, SElemType* e) { 68 | // 确保存在且不为空 69 | if (!S.base || S.top==S.base) { 70 | return ERROR; 71 | } 72 | *e = *(S.top-1); 73 | return OK; 74 | } 75 | 76 | 77 | // 入栈 78 | Status SqStackPush(SqStack* S, SElemType e) { 79 | // 确保存在 80 | if (!S || !S->base) { 81 | return ERROR; 82 | } 83 | // 栈满时,扩容 84 | if (S->top-S->base >= S->stacksize) { 85 | S->base = (SElemType*)realloc(S->base, (S->stacksize+STACKINCREMENT)*sizeof(SElemType)); 86 | if (!S->base) { 87 | exit(OVERFLOW); 88 | } 89 | 90 | S->top = S->base + S->stacksize; 91 | S->stacksize += STACKINCREMENT; 92 | } 93 | // 入栈先赋值,栈顶指针再移动 94 | *(S->top++) = e; 95 | return OK; 96 | } 97 | 98 | 99 | // 出栈 100 | Status SqStackPop(SqStack* S, SElemType* e) { 101 | // 确保不为空 102 | if (!S || !S->base || S->base==S->top) { 103 | return ERROR; 104 | } 105 | // 出栈先移动指针,在赋值 106 | *e = *(--S->top); 107 | } 108 | 109 | // 遍历 110 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)) { 111 | // 确保存在 112 | if (!S.base || S.base==S.top) { 113 | return ERROR; 114 | } 115 | 116 | SElemType* p = S.base; 117 | while (p < S.top) { 118 | Visit(*p++); 119 | } 120 | printf("\n"); 121 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0302_Conversion/SqStack.c: -------------------------------------------------------------------------------- 1 | #include "SqStack.h" 2 | 3 | 4 | // 初始化 5 | Status InitSqStack(SqStack* S) { 6 | // 确保存在 7 | if (!S) { 8 | return ERROR; 9 | } 10 | S->base = (SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); 11 | if (!S->base) { 12 | // 内存分配失败 13 | exit(OVERFLOW); 14 | } 15 | 16 | S->top = S->base; 17 | S->stacksize = STACK_INIT_SIZE; 18 | return OK; 19 | } 20 | 21 | // 销毁 22 | Status DestroySqStack(SqStack *S) { 23 | // 确保存在 24 | if (!S) { 25 | return ERROR; 26 | } 27 | 28 | free(S->base); 29 | S->base = S->top = NULL; 30 | S->stacksize = 0; 31 | return OK; 32 | } 33 | 34 | // 置空 35 | Status ClearSqStack(SqStack* S) { 36 | // 确保存在 37 | if (!S || !S->base) { 38 | return ERROR; 39 | } 40 | 41 | S->top = S->base; 42 | return OK; 43 | } 44 | 45 | 46 | // 判空 47 | Status SqStackEmpty(SqStack S) { 48 | // 确保存在 49 | if (!S.base) { 50 | return ERROR; 51 | } 52 | 53 | return S.top==S.base ? TRUE : FALSE; 54 | } 55 | 56 | 57 | // 长度 58 | int SqStackLength(SqStack S) { 59 | // 确保存在 60 | if (!S.base) { 61 | return 0; 62 | } 63 | return (int)(S.top-S.base); 64 | } 65 | 66 | // 栈顶元素 67 | Status GetSqStackTop(SqStack S, SElemType* e) { 68 | // 确保存在且不为空 69 | if (!S.base || S.top==S.base) { 70 | return ERROR; 71 | } 72 | *e = *(S.top-1); 73 | return OK; 74 | } 75 | 76 | 77 | // 入栈 78 | Status SqStackPush(SqStack* S, SElemType e) { 79 | // 确保存在 80 | if (!S || !S->base) { 81 | return ERROR; 82 | } 83 | // 栈满时,扩容 84 | if (S->top-S->base >= S->stacksize) { 85 | S->base = (SElemType*)realloc(S->base, (S->stacksize+STACKINCREMENT)*sizeof(SElemType)); 86 | if (!S->base) { 87 | exit(OVERFLOW); 88 | } 89 | 90 | S->top = S->base + S->stacksize; 91 | S->stacksize += STACKINCREMENT; 92 | } 93 | // 入栈先赋值,栈顶指针再移动 94 | *(S->top++) = e; 95 | return OK; 96 | } 97 | 98 | 99 | // 出栈 100 | Status SqStackPop(SqStack* S, SElemType* e) { 101 | // 确保不为空 102 | if (!S || !S->base || S->base==S->top) { 103 | return ERROR; 104 | } 105 | // 出栈先移动指针,在赋值 106 | *e = *(--S->top); 107 | } 108 | 109 | // 遍历 110 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)) { 111 | // 确保存在 112 | if (!S.base || S.base==S.top) { 113 | return ERROR; 114 | } 115 | 116 | SElemType* p = S.base; 117 | while (p < S.top) { 118 | Visit(*p++); 119 | } 120 | printf("\n"); 121 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0305_Expression/SqStack.c: -------------------------------------------------------------------------------- 1 | #include "SqStack.h" 2 | 3 | 4 | // 初始化 5 | Status InitSqStack(SqStack* S) { 6 | // 确保存在 7 | if (!S) { 8 | return ERROR; 9 | } 10 | S->base = (SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); 11 | if (!S->base) { 12 | // 内存分配失败 13 | exit(OVERFLOW); 14 | } 15 | 16 | S->top = S->base; 17 | S->stacksize = STACK_INIT_SIZE; 18 | return OK; 19 | } 20 | 21 | // 销毁 22 | Status DestroySqStack(SqStack *S) { 23 | // 确保存在 24 | if (!S) { 25 | return ERROR; 26 | } 27 | 28 | free(S->base); 29 | S->base = S->top = NULL; 30 | S->stacksize = 0; 31 | return OK; 32 | } 33 | 34 | // 置空 35 | Status ClearSqStack(SqStack* S) { 36 | // 确保存在 37 | if (!S || !S->base) { 38 | return ERROR; 39 | } 40 | 41 | S->top = S->base; 42 | return OK; 43 | } 44 | 45 | 46 | // 判空 47 | Status SqStackEmpty(SqStack S) { 48 | // 确保存在 49 | if (!S.base) { 50 | return ERROR; 51 | } 52 | 53 | return S.top==S.base ? TRUE : FALSE; 54 | } 55 | 56 | 57 | // 长度 58 | int SqStackLength(SqStack S) { 59 | // 确保存在 60 | if (!S.base) { 61 | return 0; 62 | } 63 | return (int)(S.top-S.base); 64 | } 65 | 66 | // 栈顶元素 67 | Status GetSqStackTop(SqStack S, SElemType* e) { 68 | // 确保存在且不为空 69 | if (!S.base || S.top==S.base) { 70 | return ERROR; 71 | } 72 | *e = *(S.top-1); 73 | return OK; 74 | } 75 | 76 | 77 | // 入栈 78 | Status SqStackPush(SqStack* S, SElemType e) { 79 | // 确保存在 80 | if (!S || !S->base) { 81 | return ERROR; 82 | } 83 | // 栈满时,扩容 84 | if (S->top-S->base >= S->stacksize) { 85 | S->base = (SElemType*)realloc(S->base, (S->stacksize+STACKINCREMENT)*sizeof(SElemType)); 86 | if (!S->base) { 87 | exit(OVERFLOW); 88 | } 89 | 90 | S->top = S->base + S->stacksize; 91 | S->stacksize += STACKINCREMENT; 92 | } 93 | // 入栈先赋值,栈顶指针再移动 94 | *(S->top++) = e; 95 | return OK; 96 | } 97 | 98 | 99 | // 出栈 100 | Status SqStackPop(SqStack* S, SElemType* e) { 101 | // 确保不为空 102 | if (!S || !S->base || S->base==S->top) { 103 | return ERROR; 104 | } 105 | // 出栈先移动指针,在赋值 106 | *e = *(--S->top); 107 | } 108 | 109 | // 遍历 110 | Status SqStackTraverse(SqStack S, void(Visit)(SElemType e)) { 111 | // 确保存在 112 | if (!S.base || S.base==S.top) { 113 | return ERROR; 114 | } 115 | 116 | SElemType* p = S.base; 117 | while (p < S.top) { 118 | Visit(*p++); 119 | } 120 | printf("\n"); 121 | } -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/ch02_计算机的发展及应用.md: -------------------------------------------------------------------------------- 1 | # 1. 计算机的发展史 2 | 3 | ## 1.1 计算机及的产生和发展 4 | 5 | ### 1.1.1 第一代电子管计算机 6 | 7 | 1. ENIAC 于1946年交付使用,采用十进制运算,含有18000多个电子管,耗电量高达150千瓦,重量达到30吨,占地面积为1500平方英尺,每秒可进行5000多次的加法运算。 8 | 9 | 2. 1946年冯·诺依曼设计了一台存储程序的计算机ISA 10 | 11 | 12 | 13 | ### 1.1.2 第二代晶体管计算机 14 | 15 | 1. 1947年在贝尔实验室成功用半导体硅作为基片,制成第一个晶体管,它具有体积小、低耗能以及载流子高速运行的特点。 16 | 2. 20世纪50年代后,出现了一场一晶体管代替电子管的革命 17 | 18 | ### 1.1.3 第三代集成电路计算机 19 | 20 | 1. 当集成电路制造技术出现后,利用光刻技术把晶体管、电阻、电容等构成的单个电路全部制作在一块极小的硅片上。 21 | 2. 进一步发展,实现将成百上千个这样的门电路全部制作在一块极小的硅片上,并引出外部连接的引线,大大缩小了计算机的体积,减少耗电量。 22 | 3. 具有代表的是IBM的System/360和PDP-8 23 | 24 | 以下是个阶段硬件技术对计算机的影响 25 | 26 | | 发展阶段 | 时间 | 硬件技术 | 速度(次/每秒) | 27 | | :------: | :-------: | :----------------: | :-----------: | 28 | | 一 | 1946-1957 | 电子管 | 40000 | 29 | | 二 | 1958-1964 | 晶体管 | 200000 | 30 | | 三 | 1965-1971 | 中、小规模集成电路 | 1000000 | 31 | | 四 | 1972-1977 | 大规模集成电路 | 10000000 | 32 | | 五 | 1978-现在 | 超大规模集成电路 | 100000000 | 33 | 34 | 35 | 36 | ## 1.2. 微型计算机的出现和发展 37 | 38 | 1. 集成电路技术把计算机的控制单元和算逻单元集成到一个芯片上,制成了微处理器芯片。 39 | 40 | 2. Moore定律:微芯片上集成的晶体管数每3年翻两番 41 | 42 | 3. Intel典型产品如下; 43 | 44 | | 产品名 | 位数 | 发布时间 | 晶体管数 | 45 | | :---------------: | :--: | :------: | :------: | 46 | | 8080 | 8 | 1974 | | 47 | | 8086 | 16 | 1978 | 2.9万 | 48 | | 8088 | 16 | 1979 | 2.9万 | 49 | | 80286 | 16 | 1982 | 13.4万 | 50 | | 80386 | 32 | 1985 | 27.5万 | 51 | | 80486 | 32 | 1989 | 120万 | 52 | | Pentium | 32 | 1993 | 310万 | 53 | | Pentium Pro | 64 | 1995 | 550万 | 54 | | Pentium Ⅱ | 64 | 1997 | 750万 | 55 | | Pentium Ⅲ | 64 | 1999 | 950万 | 56 | | Pentium Ⅳ | 64 | 2000 | 4200万 | 57 | 58 | 4. 21世纪微处理器的发展重点: 59 | 60 | - 进一步提高复杂度来提高处理器性能 61 | - 通过线程、进程级并行的开发提高处理器的性能 62 | - 将存储器集成到处理芯片内来提高处理器性能 63 | - 发展嵌入式处理器 64 | 65 | 66 | 67 | ## 1.3 软件技术的发展 68 | 69 | 1. 早期(机器语言)$\to$ 符号语言和汇编语言$\to$ 面向问题的高级语言。高级语言发展经历了几个阶段; 70 | - 第一阶段:面向科学计算和工程计算,代表FORTAN 71 | - 第二阶段:结构化程序设计,代表PASCAL 72 | - 第三阶段:面向对象程序设计,代表C++、Java 73 | 2. 软件发展有以下特点 74 | - 开发周期长 75 | - 制作成本昂贵 76 | - 检测软件产品质量的特殊性 77 | 78 | 79 | 80 | # 2. 计算机的应用 81 | 82 | ## 2.1 科学计算和数据处理 83 | 84 | pass 85 | 86 | ## 2.2 工业控制 87 | 88 | pass 89 | 90 | ## 2.3 网络技术的应用 91 | 92 | 1. 电子商务 93 | 2. 网络教育 94 | 3. 敏捷制造 95 | 96 | 97 | 98 | ## 2.4 虚拟现实 99 | 100 | pass 101 | 102 | ## 2.5 办公自动化和管理信息系统 103 | 104 | pass 105 | 106 | ## 2.6 CAD/CAM/CIMS 107 | 108 | pass 109 | 110 | ## 2.7 多媒体技术 111 | 112 | pass 113 | 114 | ## 2.8 人工智能 115 | 116 | pass 117 | 118 | # 3. 计算机展望 119 | 120 | 1. 计算机具有类似人脑的一些智能功能,要求计算机的速度要足够块 121 | 2. 芯片集成度的提高时受以下三方面的限制 122 | - 芯片集成度受物理极限的约束 123 | - 按几何级数递增的制作成本 124 | - 芯片的功耗、散热、线延迟 125 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0403_LString/LString.c: -------------------------------------------------------------------------------- 1 | #include "LString.h" 2 | 3 | /* 4 | 这个目前先不搞,太繁琐,利用价值低。 5 | */ 6 | 7 | // 初始化 8 | Status AssignLString(LString* T, const char* words, int len_words) { 9 | // 空字符串 10 | if (len_words == 0) { 11 | T->head = T->tail = NULL; 12 | T->curlen = 0; 13 | return OK; 14 | } 15 | 16 | int i, count; 17 | int m; // 需要填满的块数 18 | int n; // 如果未填满,则计算有效数 19 | Chunk* r; 20 | 21 | m = len_words / CHUNKSIZE; 22 | n = len_words % CHUNKSIZE; 23 | 24 | if (!n) { // 不是整除,需要加一块 25 | m++; 26 | } 27 | 28 | // 创建块 29 | for (i=1; i<=m; i++) { 30 | // 创建块 31 | r = (Chunk*)malloc(sizeof(Chunk)); 32 | if (!r) { 33 | exit(OVERFLOW); 34 | } 35 | r->next = NULL; 36 | if (i==1) { 37 | T->head = T->tail = r; 38 | } else { 39 | T->tail->next = r; 40 | T->tail = r; 41 | } 42 | } 43 | 44 | // 将内容写进块里面 45 | r = T->head; 46 | i = 0; 47 | count =0; 48 | 49 | while (count ch[i] = words[count]; 51 | i = (i+1) % CHUNKSIZE; 52 | if (!i) { // 已经填满一个,进入下一个块 53 | r = r->next; 54 | } 55 | count++; 56 | } 57 | 58 | // 将没有存满信息的块填充 59 | if (n) { 60 | while (i < CHUNKSIZE) { 61 | T->tail->ch[i] = '\0'; 62 | i++; 63 | } 64 | } 65 | 66 | T->curlen = len_words; 67 | return OK; 68 | } 69 | 70 | 71 | // 置空 72 | Status ClearLString(LString* S) { 73 | // 确保存在 74 | if (!S || !S->head) { 75 | return ERROR; 76 | } 77 | Chunk* p, *q; 78 | p = S->head; 79 | while (p) { 80 | q = p->next; 81 | free(p); 82 | p = q; 83 | } 84 | S->head = S->tail = NULL; 85 | S->curlen = 0; 86 | return OK; 87 | } 88 | 89 | 90 | // 判空 91 | Status LStringEmpty(LString S) { 92 | return S.curlen ? TRUE :FALSE; 93 | } 94 | 95 | 96 | // 长度 97 | int LStringLength(LString S) { 98 | return S.curlen; 99 | } 100 | 101 | // 子串 102 | Status SubLString(LString* Sub, LString S, int pos, int len) { 103 | // 判断是否合理 104 | if (pos<1 || pos>S.curlen || len<0 || pos+len-1 >S.curlen) { 105 | return ERROR; 106 | } 107 | // 如果len =0 ,不必创建 108 | if (len==0) { 109 | Sub->head = Sub->tail = NULL; 110 | Sub->curlen = 0; 111 | return OK; 112 | } 113 | 114 | // 这里代码复用,先把S的len个元素存到临时数组里,再调用上面的 115 | int count = 0; // 计数 116 | int i = 0; // 块内位置 117 | Chunk* p = S.head; 118 | char* tmp = (char*)malloc(sizeof(char)*len); 119 | int j = 0; // 临时数组下标 120 | if (!tmp) { 121 | exit(OVERFLOW); 122 | } 123 | // 遍历S,把pos后len个元素存到tmp 124 | while (p && count < pos+len) { 125 | if (count >=pos-1 ) { // 是子串 126 | tmp[j++] = p->ch[i]; 127 | } 128 | 129 | i = (i+1) % CHUNKSIZE; 130 | if (!i) { // 这个块已经用完了 131 | p = p->next; 132 | } 133 | } 134 | AssignLString(Sub, tmp, len); 135 | return OK; 136 | } 137 | 138 | 139 | // 首次出现(依赖子串) 140 | int IndexOfLString(LString S, LString T, int pos) { 141 | // 确保合理 142 | if (pos<1 || pos>S.curlen || LStringEmpty(T)) { 143 | return ERROR; 144 | } 145 | 146 | int i, s,t; 147 | LString Sub; 148 | 149 | s = S.curlen; 150 | t = T.curlen; 151 | i = pos; 152 | while (i+t-1 <= s) { 153 | // 获取子串 154 | SubLString(&Sub, S, i, t); 155 | if (LStringCmp(Sub, T) != 0) { 156 | i++; 157 | } else { 158 | return i; 159 | } 160 | } 161 | return 0; 162 | } 163 | 164 | 165 | // 插入 166 | Status LStringInsert(LString* S, int pos, LString T) { 167 | 168 | } -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0304_Maze/Maze.c: -------------------------------------------------------------------------------- 1 | #include "Maze.h" 2 | 3 | // 寻路 4 | Status MazePath(MazeType maze, PosType start, PosType end) { 5 | SqStack S; 6 | SElemType e; 7 | PosType curPos; 8 | int curStep; 9 | 10 | InitSqStack(&S); 11 | curStep = 1; 12 | curPos = start; 13 | 14 | do { 15 | printf("当前位置(%d, %d)\n", curPos.x, curPos.y); 16 | if (Pass(maze, curPos)) { 17 | FootPrint(maze, curPos); // 留下足迹 18 | e = Construct(curStep, curPos, East); 19 | SqStackPush(&S, e); 20 | 21 | if (Equal(curPos, end)) { 22 | printf("寻找成功"); 23 | PrintMaze(maze); 24 | return TRUE; 25 | } 26 | curPos = NextPos(curPos, East); 27 | curStep++; 28 | } else { 29 | if (!SqStackEmpty(S)) { 30 | SqStackPop(&S, &e); 31 | } 32 | while(e.di==North && !SqStackEmpty(S)) { 33 | MarkPrint(maze, e.seat, Impasse); // 死胡同 34 | SqStackPop(&S, &e); 35 | } 36 | 37 | if (e.di < North) { 38 | ++e.di; 39 | MarkPrint(maze, e.seat, e.di); 40 | SqStackPush(&S, e); 41 | } 42 | curPos = NextPos(e.seat, e.di); 43 | } 44 | } while(!SqStackEmpty(S)); 45 | printf("寻找失败!"); 46 | } 47 | 48 | // 迷宫初始化 49 | void InitMaze(MazeType maze, int* obs_x, int* obs_y, int n) { 50 | int i, j, temp; 51 | 52 | for (i=0 ;iM-1 || y>N-1) { 73 | return FALSE; 74 | } 75 | if (maze[x][y] !=Way) { 76 | return FALSE; 77 | } 78 | return TRUE; 79 | } 80 | 81 | // 获取下一个应该探索的位置 82 | PosType NextPos(PosType seat, int di) { 83 | PosType tmp = seat; 84 | switch (di) { 85 | case East: 86 | tmp.y++; 87 | break; 88 | case Sounth: 89 | tmp.x++; 90 | break; 91 | case West: 92 | tmp.y--; 93 | break; 94 | case North: 95 | tmp.x--; 96 | break; 97 | } 98 | return tmp; 99 | } 100 | 101 | // 留下足迹 102 | void FootPrint(MazeType maze, PosType seat) { 103 | MarkPrint(maze, seat, East); 104 | } 105 | 106 | 107 | // 留下标记 108 | void MarkPrint(MazeType maze, PosType seat, int mark) { 109 | maze[seat.x][seat.y] = mark; 110 | } 111 | 112 | // 构造通道信息 113 | SElemType Construct(int ord, PosType seat, int di) { 114 | SElemType e; 115 | e.ord = ord; 116 | e.seat = seat; 117 | e.di = di; 118 | return e; 119 | } 120 | 121 | // 判断坐标是否相等 122 | Status Equal(PosType a, PosType b) { 123 | if (a.x==b.x && a.y==b.y) { 124 | return TRUE; 125 | } else { 126 | return FALSE; 127 | } 128 | } 129 | 130 | 131 | // 绘制迷宫 132 | void PrintMaze(MazeType maze) { 133 | printf("\n-----------------------------\n"); 134 | int i, j; 135 | char mark = ' '; 136 | for (i = 0; i < M; i++) { 137 | for (j = 0; j < N; j++) { 138 | switch (maze[i][j]){ 139 | case 0: 140 | mark = '*'; 141 | break; 142 | case 1: 143 | mark = 'o'; 144 | break; 145 | case 4: 146 | mark = '>'; 147 | break; 148 | case 5: 149 | mark = 'u'; 150 | case 6: 151 | mark = '<'; 152 | break; 153 | case 7: 154 | mark = 'n'; 155 | break; 156 | } 157 | printf("%c ", mark); 158 | } 159 | printf("\n"); 160 | } 161 | printf("\n"); 162 | } 163 | 164 | 165 | -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/image/ch07_00_00.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
操作码字段
操作码字段
地址码字段
地址码字段
Text is not SVG - cannot display
-------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/ch04_不定积分.md: -------------------------------------------------------------------------------- 1 | # 1. 不定积分的概念与性质 2 | ## 1.1 原函数与不定积分的概念 3 | > @Definition 4 | > **定义1.1** 如果在区间$I$上,$\forall x\in I$, 都有$F'(x)=f(x)$或$dF(x)=f(x)dx$,则称$F(x)$为函数$f(x)$在区间$I$上的一个原函数。 5 | 6 | > @Theorem 7 | > **定理1.1(原函数存在定理)** 如果函数$f(x)$在某一区间内连续,那么在该区间内它的原函数一定存在 8 | 9 | > @Theorem 10 | > **定理1.2** 在区间$I$上,如果函数$F(x)$为函数$f(x)$的一个原函数,则$F(x)+C$是函数$f(x)$在区间$I$上的全体原函数,其中$C$为任意常数。 11 | 12 | > @Definition 13 | > **定义1.2** 称函数$f(x)$在区间$I$上的全体原函数为函数$f(x)$在区间$I$上的不定积分,记作$\int f(x)dx$,即 14 | > $$ 15 | > \int f(x) = F(x)+C (C为任意常数) 16 | > $$ 17 | > 其中$F'(x)=f(x)(\forall x\in I)$,记号$\int $为积分好,$f(x)$为积分函数,$f(x)dx$称为积分表达式,而$x$称为积分变量。 18 | 19 | ## 1.2 不定积分的几何意义 20 | 函数$f(x)$的积分在几何上表示积分曲线族。 21 | 22 | 23 | ## 1.3 基本积分公式 24 | 以下是一些常见的积分公式: 25 | 1. $\int k dx =kx +C(k为常数)$ 26 | 2. $\int x^{\mu} dx = \frac{1}{\mu +1} x^{\mu+1}+C$ 27 | 3. $\int \sin x dx = -\cos x+C$ 28 | 4. $\int \cos x dx =\sin x +C$ 29 | 5. $\int \frac{1}{\cos^2}dx =\sec^2x = \tan x +C$ 30 | 6. $\int \frac{1}{\sin^2x}dx = \csc^2x= -\cot x+C$ 31 | 7. $\int \sec x\tan xdx =\sec x +C$ 32 | 8. $\int \csc x\cot x dx =-\cot x +C$ 33 | 9. $\int a^x dx =\frac{1}{\ln a}a^x +C$ 34 | 10. $\int e^x dx = e^x+C$ 35 | 11. $\int \frac{1}{x} dx = ln(|x|)+C$ 36 | 12. $\int \frac{1}{\sqrt{1-x^2}}dx = \arcsin x+C = -\arccos x+C$ 37 | 13. $\int \frac{1}{1+x^2} dx = \tan x +C = -\cot x + C$ 38 | 14. $\int sh\ x dx =ch\ x +C$ 39 | 15. $\int ch\ x dx =sh\ x +C$ 40 | 16. $\int \tan x dx = -\ln|\cos x| +C$ 41 | 17. $\int \cot x dx = \ln|\sin x|+C$ 42 | 18. $\int \sec xdx = \ln |\sec x+\tan x| +C$ 43 | 19. $\int \csc x dx = \ln |\sec x-\cot x| +C$ 44 | 20. $\int \frac{1}{a^2+x^2}dx = \frac{1}{a} \arctan\frac{x}{a} +C$ 45 | 21. $\int \frac{1}{x^2-a^2}dx =\frac{1}{2a}\ln|\frac{x-a}{x+a}| +C$ 46 | 22. $\int \frac{1}{a^2-x^2} dx = \frac{1}{2a}\ln|\frac{a+x}{a-x}|+C$ 47 | 23. $\int \frac{1}{\sqrt{a^2-x^2}}dx = \arcsin \frac{x}{a}+C$ 48 | 24. $\int \frac{1}{\sqrt{x^2\pm a^2}} dx = \ln|x+\sqrt{x^2\pm a^2}|+C$ 49 | 50 | 51 | ## 1.4 不定积分的性质 52 | > @Property 53 | > **性质1.1** 设函数$f(x),g(x)$的原函数存在,则对任意的常数$k_1,k_2$, 54 | > $$ 55 | > \int [k_1f(x)+k_2g(x)]dx = k_1\int f(x)dx+k_2\int g(x)dx 56 | > $$ 57 | 58 | # 2. 换元积分法 59 | ## 2.1 第一换元积分法 60 | > @Theorem 61 | > **定理2.1** 设函数$f(u)$具有原函数$F(u)$,若$u=\varphi(x)$可导,那么$F([\varphi(x)])$是$F([\varphi(x)])\varphi'(x)$的原函数,即 62 | > $$ 63 | >\int F([\varphi(x)]) \varphi'(x) dx = F(\varphi(x))+C=[\int f(u)du]|_{u=u\varphi(x)} 64 | > $$ 65 | 66 | > @Theorem 67 | > **定理2.2** 设$x=\psi(x)$是单调的、可导的函数,且$\psi'(t)\neq 0$,又设$f[\psi(x)]\psi'(t)$具有原函数$\Psi(t)$,则$\Psi[\psi^{-1}(t)]$是$f(x)$ 的一个原函数,即 68 | > $$ 69 | > \int f(x) dx = \Psi[\psi^{-1}(x)]+C=[\int f[\psi(t)]]\psi'(t)dt|_{t=\psi^{-1}(x)} 70 | > $$ 71 | 72 | 73 | # 3.分部积分法 74 | ## 3.1 分部积分公式 75 | 76 | > @Theorem 77 | > **定理3.1** 设函数$u=u(x)$,$v=v(x)$具有连续的导函数,则 78 | > $$ 79 | > \int udv=uv-\int vdu 80 | > $$ 81 | > 称为分布积分公式 82 | 83 | ## 3.2 分布积分常见的几种类型 84 | 1. 多项式函数与指数乘积的不定积分 85 | 一般选取$u$为多项式函数,$v'$为指数函数 86 | 2. 多项式函数与对数函数的幂次方乘积的不定积分 87 | 这种积分可表示为$\int P(x)(\ln x)^m$型,其中$P(x)$是多项式,$m$是整数,一般的,选取$u=(\ln x)^m$,$v'=P(x)$ 88 | 3. 多项式函数与正、余弦函数乘积的不定积分 89 | 一般选取$u$为多项式,$v'$为正、余弦函数 90 | 4. 多项式函数与反三角函数乘积的不定积分 91 | 一般选取$u$为反三角函数 92 | 5. 利用分部积分构造一个方程,解方程得出结果 93 | 6. 利用分部积分构成递推公式 94 | 95 | 96 | # 4. 几种特殊类型函数的不定积分 97 | ## 4.1 有理函数的不定积分 98 | 有理函数是指两个多项式的商所表示的函数,即具有如下形式的函数: 99 | $$ 100 | \frac{P(x)}{Q(x)}=\frac{a_0x^n+a_1x^{n-1}+\dots a_{n-1}x+a_n}{b_0x^m+b_1x^{m-1}+\dots +b_{m-1}x+b_m} 101 | $$ 102 | 其中,$m,n$皆为自然数。 103 | - 当$n\ge m$时,该有理函数称为有理假分式 104 | - 当$n @Theorem 108 | > **定理4.1** 109 | > 1. 如果$Q(x)=b_0x^m+b_1x^{m-1}+\dots +b_{m-1}x+b_m$为实系数多项式,则$Q(x)$总可以分解为一些实系数的不可约一次因子或二次因子乘积,即 110 | > $$ 111 | > Q(x) = b_0(x-a)^{\alpha}\dots(x-b)^{\beta}(x^2+px+q)^{\lambda}\dots(x^2+rx+s)^{\mu} 112 | > $$ 113 | > 其中$\alpha, \beta, \lambda, \mu$ 都是自然数,且二次因子,$x^2+px+q$,$x^2+rx+s$不能再分解为实系数的一次因子的乘积,即$p^2-4q<0,\dots$$r^2-4r<0$成立 114 | > 2. 如果$Q(x)$的分解式如上式,则有理真分式$\frac{P(x)}{Q(x)}$可以唯一地分解为部分分式之和 115 | > $$ 116 | > \begin{align*} 117 | > \frac{P(x)}{Q(x)} = & \frac{A_1}{(x-a)^{\alpha}}+\frac{A_2}{(x-a)^{\alpha-1}}+\dots+\frac{A_\alpha}{x-a}+\dots+ \\ 118 | > & \frac{B_1}{(x-b)^\beta}+ \frac{B_2}{(x-b)^{\beta-1}}+\dots+\frac{B_\beta}{x-b}+\dots+ \\ 119 | >& \frac{M_1x+N_1}{(x^2+px+q)^{\lambda}}+\frac{M_2x+N_2}{(x^2+px+q)^{\lambda-1}}+\dots + \frac{M_\lambda x+N_\lambda}{(x^2+px+q)}+ \\ 120 | > & \frac{R_1x+S_1}{(x^2+rx+s)^{\mu}}+\frac{R_2x+N_2}{(x^2+rx+s)^{\mu-1}}+\dots + \frac{R_\mu x+S_\mu}{(x^2+rx+s)} 121 | > \end{align*} 122 | > $$ 123 | > 其中$A_i,B_1,M_i,R_i,S_i$都是待定的常数 124 | 125 | > @ Theorem 126 | > **定理4.2** 一切有理函数的原函数都是初等函数 127 | 128 | ## 4.2 三角函数有理式的不定积分 129 | 三角函数有理式是指由三角函数和常数经过有限次四则运算所构成的函数。对于三角函数的有理式的不定积分,做代换$\tan\frac{x}{2}=u$,总可以将该积分化为有理函数的不定积分,通常将这个代换称为万能代换。 130 | 131 | -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/image/ch05_00_00.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
主存
主存
CPU
CPU
I/O设备
I/O设备
Text is not SVG - cannot display
-------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0404_KMP/SString.c: -------------------------------------------------------------------------------- 1 | #include "SString.h" 2 | 3 | 4 | // 初始化 5 | Status AssignSString(SString T, const char* words, int len_words) { 6 | int i, len; 7 | len = len_words; 8 | 9 | // 是否过长 10 | if (len > MAXSTRLEN) { 11 | return ERROR; 12 | } 13 | 14 | T[0] = len; // 第一位置存放长度 15 | for (i=1; i<=len; i++) { 16 | T[i] = words[i-1]; 17 | } 18 | 19 | return OK; 20 | } 21 | 22 | // // 销毁 23 | // Status DestorySString(SString S) { // 顺序串没有销毁 24 | // return OK; 25 | // } 26 | 27 | // 置空 28 | Status ClearSString(SString S) { 29 | S[0] = 0; 30 | return OK; 31 | } 32 | 33 | // 判空 34 | Status SStringEmpty(SString S) { 35 | return !S[0] ? TRUE : FALSE; 36 | } 37 | 38 | // 长度 39 | int SStringLength(SString S) { 40 | return S[0]; 41 | } 42 | 43 | // 子串 44 | Status SubSString(SString Sub, SString S, int pos, int len) { 45 | // 先判断子串位置是否越界 46 | if (pos<1 || pos>S[0] || len <0 || pos+len-1>S[0]) { 47 | return ERROR; 48 | } 49 | 50 | int i; 51 | for (i=1; i<=len; i++) { 52 | Sub[i] = S[pos+i-1]; 53 | } 54 | 55 | Sub[0] = len; 56 | return OK; 57 | } 58 | 59 | 60 | // 首次出现(依赖子串) 61 | int IndexOfSString1(SString S, SString T, int pos) { 62 | // 查找失败情况 63 | if (pos <1 || pos > S[0] || SStringEmpty(T)) { 64 | return 0; 65 | } 66 | 67 | int i, m, n; 68 | SString Sub; 69 | 70 | n = SStringLength(S); 71 | m = SStringLength(T); 72 | i = pos; 73 | 74 | while (i<=n-m+1) { 75 | SubSString(Sub, S, i, m); // 取出子串后比较 76 | if (SStringCmp(Sub, T) != 0) { // 不匹配 77 | i++; 78 | } else { 79 | return i; 80 | } 81 | } 82 | return 0; 83 | } 84 | 85 | 86 | // 首次出现(不依赖子串) 87 | int IndexOfSString2(SString S, SString T, int pos) { 88 | // 查找失败情况 89 | if (pos < 1 || pos > S[0] || SStringEmpty(T)) { 90 | return 0; 91 | } 92 | 93 | int i, j; 94 | 95 | i = pos; 96 | j = 1; 97 | while (i<=S[0] && j<=T[0]) { 98 | if(S[i] == T[j]) { // 匹配上,直接后移 99 | i++; 100 | j++; 101 | } else { //不匹配,回退 102 | /* 103 | 因为此时移动的步数为j-1(j的初值为1), 104 | 则i先退回原来的,有 i=i-(j-1); 105 | 然后i后移一位,有: 106 | i = [i-(j-1)] +1 => i = i-j+2; 107 | */ 108 | i = i-j+2; 109 | j = 1; 110 | } 111 | } 112 | 113 | if (j > T[0]) { 114 | return i-T[0]; // 返回 i-j+1也行 115 | } else { 116 | return 0; 117 | } 118 | } 119 | 120 | // 插入 121 | Status SStringInsert(SString S, int pos, SString T) { 122 | // 确保插入位置合理 123 | if (pos <1 || pos > S[0]+1 || S[0] + T[0] > MAXSTRLEN) { 124 | return ERROR; 125 | } 126 | 127 | // 如果T为空,则直接返回 128 | if (SStringEmpty(T)) { 129 | return OK; 130 | } 131 | 132 | int i = pos; 133 | // 先将S的元素后移 134 | for (i=S[0]; i>=pos; i--) { 135 | S[i+T[0]] = S[i]; 136 | } 137 | // 插入T元素 138 | for (i=pos; i S[0] || len<0) { 150 | return ERROR; 151 | } 152 | 153 | // 如果len=0,直接返回 154 | if (!len) { 155 | return OK; 156 | } 157 | 158 | int i; 159 | for (i=pos; i<=S[0]-len; i++) { 160 | S[i] = S[i+len]; 161 | } 162 | S[0] -= len; 163 | 164 | return OK; 165 | } 166 | 167 | 168 | // 比较串 169 | int SStringCmp(SString S, SString T) { 170 | int i = 1; 171 | while (i<=S[0] && i<=T[0]) { 172 | if (S[i] != T[i]) { 173 | return S[i] - T[i]; 174 | } 175 | i++; 176 | } 177 | return S[0] - T[0]; // 前i个一致,比较长度 178 | } 179 | 180 | // 复制 181 | Status SStringCopy(SString T, SString S) { 182 | int i; 183 | 184 | for (i=0; i0说明插不下了 207 | 208 | } 209 | 210 | // 连接 211 | Status SStringConcat(SString T, SString S1, SString S2) { 212 | int i; 213 | if (S1[0] +S2[0] <= MAXSTRLEN) { 214 | // 不需要截断 215 | for (i=1;i<=S1[0]; i++) { 216 | T[i] = S1[i]; 217 | } 218 | for (i=1; i<=S2[0]; i++) { 219 | T[i+S1[0]] = S2[i]; 220 | } 221 | T[0] = S1[0]+S2[0]; 222 | return TRUE; 223 | } else { 224 | for (i=1; i MAXSTRLEN) { 11 | return ERROR; 12 | } 13 | 14 | T[0] = len; // 第一位置存放长度 15 | for (i=1; i<=len; i++) { 16 | T[i] = words[i-1]; 17 | } 18 | 19 | return OK; 20 | } 21 | 22 | // // 销毁 23 | // Status DestorySString(SString S) { // 顺序串没有销毁 24 | // return OK; 25 | // } 26 | 27 | // 置空 28 | Status ClearSString(SString S) { 29 | S[0] = 0; 30 | return OK; 31 | } 32 | 33 | // 判空 34 | Status SStringEmpty(SString S) { 35 | return !S[0] ? TRUE : FALSE; 36 | } 37 | 38 | // 长度 39 | int SStringLength(SString S) { 40 | return S[0]; 41 | } 42 | 43 | // 子串 44 | Status SubSString(SString Sub, SString S, int pos, int len) { 45 | // 先判断子串位置是否越界 46 | if (pos<1 || pos>S[0] || len <0 || pos+len-1>S[0]) { 47 | return ERROR; 48 | } 49 | 50 | int i; 51 | for (i=1; i<=len; i++) { 52 | Sub[i] = S[pos+i-1]; 53 | } 54 | 55 | Sub[0] = len; 56 | return OK; 57 | } 58 | 59 | 60 | // 首次出现(依赖子串) 61 | int IndexOfSString1(SString S, SString T, int pos) { 62 | // 查找失败情况 63 | if (pos <1 || pos > S[0] || SStringEmpty(T)) { 64 | return 0; 65 | } 66 | 67 | int i, m, n; 68 | SString Sub; 69 | 70 | n = SStringLength(S); 71 | m = SStringLength(T); 72 | i = pos; 73 | 74 | while (i<=n-m+1) { 75 | SubSString(Sub, S, i, m); // 取出子串后比较 76 | if (SStringCmp(Sub, T) != 0) { // 不匹配 77 | i++; 78 | } else { 79 | return i; 80 | } 81 | } 82 | return 0; 83 | } 84 | 85 | 86 | // 首次出现(不依赖子串) 87 | int IndexOfSString2(SString S, SString T, int pos) { 88 | // 查找失败情况 89 | if (pos < 1 || pos > S[0] || SStringEmpty(T)) { 90 | return 0; 91 | } 92 | 93 | int i, j; 94 | 95 | i = pos; 96 | j = 1; 97 | while (i<=S[0] && j<=T[0]) { 98 | if(S[i] == T[j]) { // 匹配上,直接后移 99 | i++; 100 | j++; 101 | } else { //不匹配,回退 102 | /* 103 | 因为此时移动的步数为j-1(j的初值为1), 104 | 则i先退回原来的,有 i=i-(j-1); 105 | 然后i后移一位,有: 106 | i = [i-(j-1)] +1 => i = i-j+2; 107 | */ 108 | i = i-j+2; 109 | j = 1; 110 | } 111 | } 112 | 113 | if (j > T[0]) { 114 | return i-T[0]; // 返回 i-j+1也行 115 | } else { 116 | return 0; 117 | } 118 | } 119 | 120 | // 插入 121 | Status SStringInsert(SString S, int pos, SString T) { 122 | // 确保插入位置合理 123 | if (pos <1 || pos > S[0]+1 || S[0] + T[0] > MAXSTRLEN) { 124 | return ERROR; 125 | } 126 | 127 | // 如果T为空,则直接返回 128 | if (SStringEmpty(T)) { 129 | return OK; 130 | } 131 | 132 | int i = pos; 133 | // 先将S的元素后移 134 | for (i=S[0]; i>=pos; i--) { 135 | S[i+T[0]] = S[i]; 136 | } 137 | // 插入T元素 138 | for (i=pos; i S[0] || len<0) { 150 | return ERROR; 151 | } 152 | 153 | // 如果len=0,直接返回 154 | if (!len) { 155 | return OK; 156 | } 157 | 158 | int i; 159 | for (i=pos; i<=S[0]-len; i++) { 160 | S[i] = S[i+len]; 161 | } 162 | S[0] -= len; 163 | 164 | return OK; 165 | } 166 | 167 | 168 | // 比较串 169 | int SStringCmp(SString S, SString T) { 170 | int i = 1; 171 | while (i<=S[0] && i<=T[0]) { 172 | if (S[i] != T[i]) { 173 | return S[i] - T[i]; 174 | } 175 | i++; 176 | } 177 | return S[0] - T[0]; // 前i个一致,比较长度 178 | } 179 | 180 | // 复制 181 | Status SStringCopy(SString T, SString S) { 182 | int i; 183 | 184 | for (i=0; i0说明插不下了 207 | 208 | } 209 | 210 | // 连接 211 | Status SStringConcat(SString T, SString S1, SString S2) { 212 | int i; 213 | if (S1[0] +S2[0] <= MAXSTRLEN) { 214 | // 不需要截断 215 | for (i=1;i<=S1[0]; i++) { 216 | T[i] = S1[i]; 217 | } 218 | for (i=1; i<=S2[0]; i++) { 219 | T[i+S1[0]] = S2[i]; 220 | } 221 | T[0] = S1[0]+S2[0]; 222 | return TRUE; 223 | } else { 224 | for (i=1; ich = NULL; 9 | T->length = 0; 10 | return OK; 11 | } 12 | T->ch = (char*)malloc(len_words*sizeof(char)); 13 | if (!T->ch) { 14 | // 内存分配失败 15 | exit(OVERFLOW); 16 | } 17 | T->length = len_words; 18 | for (i=0; ich[i] = words[i]; 20 | } 21 | return OK; 22 | } 23 | 24 | // 置空 25 | Status ClearHString(HString* S) { 26 | // 确保存在 27 | if (!S) { 28 | return ERROR; 29 | } 30 | if (S->length) { 31 | free(S->ch); 32 | S->ch = NULL; 33 | S->length = 0; 34 | } 35 | return OK; 36 | } 37 | 38 | 39 | // 判空 40 | Status HStringEmpty(HString S) { 41 | return S.length ? FALSE: TRUE; 42 | } 43 | 44 | // 长度 45 | int HStringLength(HString S) { 46 | return S.length; 47 | } 48 | 49 | // 子串 50 | Status SubHString(HString* Sub, HString S, int pos, int len) { 51 | // 保证存在 52 | if (pos < 1|| pos>S.length || len <0 || pos+len-1>S.length) { 53 | return ERROR; 54 | } 55 | // len = 0 , 则返回空串 56 | if (len==0) { 57 | Sub->ch = NULL; 58 | Sub->length = 0; 59 | return OK; 60 | } 61 | int i; 62 | Sub->ch = (char*) malloc(len*sizeof(char)); 63 | Sub->length = len; 64 | for (i=0; ich[i] = S.ch[pos-1+i]; 66 | } 67 | return OK; 68 | } 69 | 70 | 71 | // 首次出现 72 | int IndexOfHString(HString S, HString T, int pos) { 73 | // 确保pos合理 74 | if (pos<1 || pos>S.length || S.length <=0 || T.length <=0) { 75 | return 0; 76 | } 77 | 78 | char *i, *j; 79 | // i,j分别指向S和T 80 | i = S.ch; 81 | j = T.ch; 82 | while (i-S.ch< S.length && j-T.ch < T.length) { 83 | if (*i == *j) { // 匹配就后移 84 | i++; 85 | j++; 86 | } else { // 不匹配就回退 87 | i = i - (j-T.ch)+1; 88 | j = T.ch; 89 | } 90 | } 91 | 92 | if (j-T.ch == T.length) { // 说明整个j都匹配上了 93 | /* 94 | 目前i是匹配的末尾,距离匹配的首地址相差 = j与T.ch的距离 95 | */ 96 | return (i-S.ch) - (j- T.ch) + 1; 97 | } else { 98 | return 0; 99 | } 100 | } 101 | 102 | // 插入 103 | Status HStringInsert(HString* S, int pos, HString T) { 104 | // 确保存在且插入合理 105 | if (!S || pos<1||pos>S->length+1) { 106 | return ERROR; 107 | } 108 | // 如果插入的是空,直接返回 109 | if (HStringEmpty(T)) { 110 | return OK; 111 | } 112 | 113 | int i; 114 | // 重新分配空间给S的ch 115 | S->ch = (char*)realloc(S->ch, (S->length+T.length)*sizeof(char)); 116 | if (!S->ch) { 117 | exit(OVERFLOW); // 内存分配失败 118 | } 119 | // 插入之后的元素后移 120 | for (i=S->length-1; i>=pos-1; i--) { 121 | S->ch[i+T.length] = S->ch[i]; 122 | } 123 | // 插入T元素 124 | for (i=0; ich[pos+i-1] = T.ch[i]; 126 | } 127 | S->length = S->length+T.length; 128 | return OK; 129 | } 130 | 131 | // 删除 132 | Status HStringDelete(HString* S, int pos, int len) { 133 | // 确保存在且合法 134 | if (!S || S->length<=0 || pos<1 || pos+len-1>S->length) { 135 | return ERROR; 136 | } 137 | // 如果删除长度为0,直接返回 138 | if (len==0) { 139 | return OK; 140 | } 141 | 142 | int i; 143 | // 将后面的元素前移 144 | for (i=0; i<(S->length-len); i++) { 145 | S->ch[pos+i-1] = S->ch[pos+i-1+len]; 146 | } 147 | S->length -= len; 148 | // 缩减空间 149 | S->ch = (char*) realloc (S->ch, S->length*sizeof(char)); 150 | 151 | return OK; 152 | } 153 | 154 | // 比较串 155 | int HStringCmp(HString S, HString T) { 156 | int i = 0; 157 | while (ich = NULL; 170 | T->length = 0; 171 | } else { 172 | // 分配空间 173 | T->ch = (char*) malloc (S.length*sizeof(char)); 174 | if (!T->ch) { 175 | exit(OVERFLOW); 176 | } 177 | 178 | // 复制元素 179 | for (i=0; ich[i] = S.ch[i]; 181 | } 182 | } 183 | return OK; 184 | } 185 | 186 | 187 | // 替换 188 | Status HStringReplace(HString* S, HString T, HString V) { 189 | int i; 190 | 191 | if (HStringEmpty(*S) || HStringEmpty(T)) { 192 | return ERROR; 193 | } 194 | i = IndexOfHString(*S, T, 1); 195 | while (i) { 196 | HStringDelete(S, i, T.length); 197 | HStringInsert(S, i, V); 198 | i += V.length; 199 | i = IndexOfHString(*S, T, i); 200 | } 201 | return OK; 202 | } 203 | 204 | // 连接 205 | Status HStringConcat(HString* T, HString S1, HString S2) { 206 | int i; 207 | T->length = S1.length + S2.length; 208 | T->ch = (char*) malloc (T->length*sizeof(char)); 209 | 210 | // 复制S1的元素 211 | for (i=0; ich[i] = S1.ch[i]; 213 | } 214 | 215 | // 复制S2的元素 216 | for (i=0; ich[S1.length+i] = S2.ch[i]; 218 | } 219 | 220 | return OK; 221 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0405_WordList/HString.c: -------------------------------------------------------------------------------- 1 | #include "HString.h" 2 | 3 | // 初始化 4 | Status AssignHString(HString* T, const char* words, int len_words) { 5 | int i; 6 | if (len_words <= 0) { 7 | // 表示建立空的 8 | T->ch = NULL; 9 | T->length = 0; 10 | return OK; 11 | } 12 | T->ch = (char*)malloc(len_words*sizeof(char)); 13 | if (!T->ch) { 14 | // 内存分配失败 15 | exit(OVERFLOW); 16 | } 17 | T->length = len_words; 18 | for (i=0; ich[i] = words[i]; 20 | } 21 | return OK; 22 | } 23 | 24 | // 置空 25 | Status ClearHString(HString* S) { 26 | // 确保存在 27 | if (!S) { 28 | return ERROR; 29 | } 30 | if (S->length) { 31 | free(S->ch); 32 | S->ch = NULL; 33 | S->length = 0; 34 | } 35 | return OK; 36 | } 37 | 38 | 39 | // 判空 40 | Status HStringEmpty(HString S) { 41 | return S.length ? FALSE: TRUE; 42 | } 43 | 44 | // 长度 45 | int HStringLength(HString S) { 46 | return S.length; 47 | } 48 | 49 | // 子串 50 | Status SubHString(HString* Sub, HString S, int pos, int len) { 51 | // 保证存在 52 | if (pos < 1|| pos>S.length || len <0 || pos+len-1>S.length) { 53 | return ERROR; 54 | } 55 | // len = 0 , 则返回空串 56 | if (len==0) { 57 | Sub->ch = NULL; 58 | Sub->length = 0; 59 | return OK; 60 | } 61 | int i; 62 | Sub->ch = (char*) malloc(len*sizeof(char)); 63 | Sub->length = len; 64 | for (i=0; ich[i] = S.ch[pos-1+i]; 66 | } 67 | return OK; 68 | } 69 | 70 | 71 | // 首次出现 72 | int IndexOfHString(HString S, HString T, int pos) { 73 | // 确保pos合理 74 | if (pos<1 || pos>S.length || S.length <=0 || T.length <=0) { 75 | return 0; 76 | } 77 | 78 | char *i, *j; 79 | // i,j分别指向S和T 80 | i = S.ch; 81 | j = T.ch; 82 | while (i-S.ch< S.length && j-T.ch < T.length) { 83 | if (*i == *j) { // 匹配就后移 84 | i++; 85 | j++; 86 | } else { // 不匹配就回退 87 | i = i - (j-T.ch)+1; 88 | j = T.ch; 89 | } 90 | } 91 | 92 | if (j-T.ch == T.length) { // 说明整个j都匹配上了 93 | /* 94 | 目前i是匹配的末尾,距离匹配的首地址相差 = j与T.ch的距离 95 | */ 96 | return (i-S.ch) - (j- T.ch) + 1; 97 | } else { 98 | return 0; 99 | } 100 | } 101 | 102 | // 插入 103 | Status HStringInsert(HString* S, int pos, HString T) { 104 | // 确保存在且插入合理 105 | if (!S || pos<1||pos>S->length+1) { 106 | return ERROR; 107 | } 108 | // 如果插入的是空,直接返回 109 | if (HStringEmpty(T)) { 110 | return OK; 111 | } 112 | 113 | int i; 114 | // 重新分配空间给S的ch 115 | S->ch = (char*)realloc(S->ch, (S->length+T.length)*sizeof(char)); 116 | if (!S->ch) { 117 | exit(OVERFLOW); // 内存分配失败 118 | } 119 | // 插入之后的元素后移 120 | for (i=S->length-1; i>=pos-1; i--) { 121 | S->ch[i+T.length] = S->ch[i]; 122 | } 123 | // 插入T元素 124 | for (i=0; ich[pos+i-1] = T.ch[i]; 126 | } 127 | S->length = S->length+T.length; 128 | return OK; 129 | } 130 | 131 | // 删除 132 | Status HStringDelete(HString* S, int pos, int len) { 133 | // 确保存在且合法 134 | if (!S || S->length<=0 || pos<1 || pos+len-1>S->length) { 135 | return ERROR; 136 | } 137 | // 如果删除长度为0,直接返回 138 | if (len==0) { 139 | return OK; 140 | } 141 | 142 | int i; 143 | // 将后面的元素前移 144 | for (i=0; i<(S->length-len); i++) { 145 | S->ch[pos+i-1] = S->ch[pos+i-1+len]; 146 | } 147 | S->length -= len; 148 | // 缩减空间 149 | S->ch = (char*) realloc (S->ch, S->length*sizeof(char)); 150 | 151 | return OK; 152 | } 153 | 154 | // 比较串 155 | int HStringCmp(HString S, HString T) { 156 | int i = 0; 157 | while (ich = NULL; 170 | T->length = 0; 171 | } else { 172 | // 分配空间 173 | T->ch = (char*) malloc (S.length*sizeof(char)); 174 | if (!T->ch) { 175 | exit(OVERFLOW); 176 | } 177 | 178 | // 复制元素 179 | for (i=0; ich[i] = S.ch[i]; 181 | } 182 | } 183 | return OK; 184 | } 185 | 186 | 187 | // 替换 188 | Status HStringReplace(HString* S, HString T, HString V) { 189 | int i; 190 | 191 | if (HStringEmpty(*S) || HStringEmpty(T)) { 192 | return ERROR; 193 | } 194 | i = IndexOfHString(*S, T, 1); 195 | while (i) { 196 | HStringDelete(S, i, T.length); 197 | HStringInsert(S, i, V); 198 | i += V.length; 199 | i = IndexOfHString(*S, T, i); 200 | } 201 | return OK; 202 | } 203 | 204 | // 连接 205 | Status HStringConcat(HString* T, HString S1, HString S2) { 206 | int i; 207 | T->length = S1.length + S2.length; 208 | T->ch = (char*) malloc (T->length*sizeof(char)); 209 | 210 | // 复制S1的元素 211 | for (i=0; ich[i] = S1.ch[i]; 213 | } 214 | 215 | // 复制S2的元素 216 | for (i=0; ich[S1.length+i] = S2.ch[i]; 218 | } 219 | 220 | return OK; 221 | -------------------------------------------------------------------------------- /01 - 408/01 - Data Structure/Code/CourceBook/0211_Polynomial/Polynomial.c: -------------------------------------------------------------------------------- 1 | #include "Pololynomial.h" 2 | 3 | 4 | // 创建多项式 5 | void CreatePolyn(Polynomial* P, int m, int* expns, float* coefs) { 6 | EPosition h, q; 7 | ElemType e; 8 | int i; 9 | ELink s; 10 | 11 | InitELinkList(P); 12 | h = GetElinkListHead(*P); // 头指针 13 | e.coef = 0.0f; 14 | e.expn = -1; 15 | SetELinkListCurElem(h, e); 16 | 17 | for (i=1; i<=m; i++) { 18 | e.coef = coefs[i-1]; 19 | e.expn = expns[i-1]; 20 | 21 | //// 链表中不存在该指数项 22 | //if (!ELinkListLocate(*P, e, &q, Cmp)) { 23 | // // 创建节点 24 | // if (MakeNode(&s, e) ) { 25 | // ELinkListInsertFirst(P, q, s); 26 | // } 27 | //} 28 | MakeNode(&s, e); 29 | ELinkListInsertFirst(P, h, s); 30 | h = h->next; 31 | } 32 | } 33 | 34 | 35 | // 销毁多项式 36 | void DestroyPolyn(Polynomial* P) { 37 | DestroyELinkList(P); 38 | } 39 | 40 | // 返回项数 41 | int PolynLength(Polynomial P) { 42 | return ELinkListLength(P); 43 | } 44 | 45 | // 多项式相加 46 | void AddPolyn(Polynomial* Pa, Polynomial* Pb) { 47 | EPosition ha, hb; 48 | EPosition qa, qb; 49 | ElemType a, b; 50 | float sum; 51 | 52 | ha = GetElinkListHead(*Pa); 53 | hb = GetElinkListHead(*Pb); 54 | 55 | qa = ELinkListNextPos(*Pa, ha); 56 | qb = ELinkListNextPos(*Pb, hb); 57 | 58 | while (qa && qb) { 59 | a = GetELinkListCurElem(qa); 60 | b = GetELinkListCurElem(qb); 61 | 62 | 63 | 64 | switch(Cmp(a, b)) { 65 | case -1: { // La的系数小 66 | ha = qa; 67 | qa = ELinkListNextPos(*Pa, ha); 68 | } 69 | break; 70 | 71 | case 0 :{ 72 | sum = a.coef + b.coef; 73 | if (sum != 0.0) { 74 | qa->data.coef = sum; 75 | ha = qa; 76 | } else { // 相加系数为0 77 | ELinkListDeleteFirst(Pa, ha, &qa); 78 | FreeNode(&qa); 79 | } 80 | // 删除Lb用过的节点 81 | ELinkListDeleteFirst(Pb, hb, &qb); 82 | FreeNode(&qb); 83 | 84 | // qa和qb后移 85 | qa = ELinkListNextPos(*Pa, ha); 86 | qb = ELinkListNextPos(*Pb, hb); 87 | 88 | } 89 | break; 90 | 91 | case 1: { //Pa的指大于Pb 92 | // 从Pb摘下,放到Pa 93 | ELinkListDeleteFirst(Pb, hb, &qb); 94 | ELinkListInsertFirst(Pa, ha, qb); 95 | 96 | // 后移 97 | ha = ELinkListNextPos(*Pa, ha); 98 | qb = ELinkListNextPos(*Pb, hb); 99 | } 100 | break; 101 | 102 | } 103 | } 104 | // Pb还有剩余,直接接入 105 | if (qb) { 106 | ELinkListAppend(Pa, qb); 107 | } 108 | // 释放Pb 109 | FreeNode(&hb); 110 | Pb->head = Pb->tail = NULL; 111 | Pb->len = 0; 112 | } 113 | 114 | // 多项式相减 115 | void SubtractPolyn(Polynomial* Pa, Polynomial* Pb) { 116 | // 这个先把Pb每个系数都取反,后面调用加法 117 | ELink p; 118 | int i ; 119 | for (i=0; ilen; i++) { 120 | ELinkListLocatePos(*Pb, i+1, &p); 121 | p->data.coef = -1.0*p->data.coef; 122 | } 123 | AddPolyn(Pa, Pb); 124 | } 125 | 126 | // 多项式相乘 127 | void MuliplyPolyn(Polynomial* Pa, Polynomial* Pb) { 128 | Polynomial Pc, Ptmp; 129 | int i, j, la, lb; 130 | EPosition ha, hb; 131 | EPosition qa, qb; 132 | ELink s; 133 | ElemType e; 134 | 135 | la = PolynLength(*Pa); 136 | lb = PolynLength(*Pb); 137 | 138 | ha = GetElinkListHead(*Pa); 139 | hb = GetElinkListHead(*Pb); 140 | 141 | // Pc初始化 142 | InitELinkList(&Pc); 143 | 144 | // 思路:从Pa中摘下a_i, 用a_i*Pb后存于tmp;然后每个tmp与Pc相加。 145 | for(i=1; i<=la; i++) { 146 | InitELinkList(&Ptmp); 147 | ELinkListDeleteFirst(Pa, ha, &qa); 148 | 149 | for (j=1, qb=ELinkListNextPos(*Pb, hb); j<=lb; j++, qb=ELinkListNextPos(*Pb, qb)) { 150 | e.coef = qa->data.coef*qb->data.coef; 151 | e.expn = qa->data.expn+qb->data.expn; 152 | 153 | // 创建新的节点 154 | MakeNode(&s, e); 155 | ELinkListAppend(&Ptmp, s); 156 | } 157 | AddPolyn(&Pc, &Ptmp); 158 | } 159 | AddPolyn(Pa, &Pc); 160 | DestroyELinkList(Pb); 161 | } 162 | 163 | // 打印多项式 164 | void PrintPolyn(Polynomial P) { 165 | int i; 166 | ELink q = P.head->next; 167 | 168 | for (i=1; i<=P.len; i++) { 169 | // 系数为零不展示 170 | if (q->data.coef == 0.0f) { 171 | continue; 172 | } 173 | if (i==1) { 174 | printf("%g", q->data.coef); // 第一个不需要显示符号 175 | } else { 176 | if (q->data.coef> 0) { 177 | printf("+"); 178 | printf("%g", q->data.coef); 179 | } else { 180 | //printf("-"); 181 | printf("%g", q->data.coef); 182 | } 183 | } 184 | 185 | if (q->data.expn) { 186 | printf("x"); 187 | if (q->data.expn != 1) { 188 | printf("^%d", q->data.expn); 189 | } 190 | } 191 | q = q->next; 192 | } 193 | printf("\n"); 194 | } 195 | 196 | // 比较指数大小 197 | int Cmp(ElemType e1, ElemType e2) { 198 | int i = e1.expn - e2.expn; 199 | if (i > 0) { 200 | return 1; 201 | } else if (i==0) { 202 | return 0; 203 | } else { 204 | return -1; 205 | } 206 | } 207 | -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/ch01_计算机系统概述.md: -------------------------------------------------------------------------------- 1 | # 1 计算机系统简介 2 | ## 1.1 计算机的软硬件概念 3 | 计算机系统由"硬件"和软件两大部分组成 4 | - 硬件:是指计算机的实体部分,它由看得见摸得着的各种电子器件,各类光、电、机设备的实物组成 5 | - 软件:由人们事先编制的具有各类特殊功能的程序组成。 6 | 计算机软件又可以分为两大类: 7 | - 系统软件:又叫系统程序,主要用来管理整个计算机系统,监视服务,使得系统资源得到合理调度,高效运行,它包括: 8 | 1. 标准程序库 9 | 2. 语言处理程序 10 | 3. 操作系统 11 | 4. 服务程序 12 | 5. 数据库管理系统 13 | 6. 网络软件 14 | - 应用软件:又称应用程序,是用户根据任务需要所编制的各种程序。 15 | 16 | ## 1.2 计算机的层次结构 17 | 现在的计算机的解题过程如下: 18 | 19 | 以下按照计算机的发展历程展示计算机的层次结构 20 | 21 | 1. 早期的计算机只有机器语言(用0,1所表示的语言),用户必须用二级制代码来编写程序。 22 | 23 | 2. 20世纪50年代开始出现了符号式的程序设计语言,即汇编语言。它使用ADD、SUB、MUL、DIV等分别表示加减乘除等操作,并用符号表示指令或数据所在存储单元的地址。 24 | 必须先将汇编语言程序翻译成机器语言程序,然后才能被机器接受并自动运行。 25 | 26 | 3. 20世纪60年代出现了各种面向问题的高级语言,如FORTRAN、BASIC、PASCAL、C等。 27 | 先将高级语言翻译成汇编语言(或其他中间语言程序),然后再翻译成机器语言程序;或者将高级语言直接翻译成机器语言程序。 28 | 将高级语言翻译成机器语言程序的软件称为==翻译程序==,翻译程序分两种 29 | - 编译程序: 将高级语言程序的全部语句一次性翻译成机器语言,然后再执行机器语言程序 30 | 31 | - 解释程序: 将源程序的一条语句翻译成对应于机器语言的一条语句,并立即执行这条语句,接着翻译、执行,直到完成全部的源程序。 32 | 33 | 其图如下: 34 | 35 | 4. 机器$M_1$内部向下延伸而形成下一级的微程序机器$M_0$,机器$M_0$是直接将机器$M_1$的每条指令翻译成一组微指令,即构成一个微程序。 36 | 37 | 5. 对于上述的结构中,在实际机器$M_1$与虚拟机器$M_2$之间还有一级虚拟机器,它是由操作系统软件构成的。 38 | 39 | 40 | ## 1.3 计算机组成和计算机体系结构 41 | 1. 计算机体系结构是指那些能够被程序员所见到的计算机属性,即概念性的结构与功能特性。计算机系统的属性通常指用机器语言编程的程序员所看到的传统机器的属性,包括指令集、数据结构、存储器寻址级数、I/O机等;站在不同层次上编程的程序员所看到的计算机属性也不相同 42 | 2. 计算机组成是指如何实现计算机体系结构所体现的属性,包含许多对程序员来说是透明的硬件细节。 43 | 44 | 例如:指令系统体现了机器的属性,属于计算机结构的问题;但指令的实现,即如何取指令、分析指令、取操作数、运算、送结果等都属于是计算机组成问题。 45 | 46 | # 2. 计算机的基本组成 47 | 48 | ## 2.1 冯·诺依曼计算机的特点 49 | 50 | 冯·诺依曼计算机特点如下: 51 | 1. 计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成 52 | 2. 指令和数据以同等地位存放于存储器内,并可按地址寻址 53 | 3. 指令和数据均用二进制数表示 54 | 4. 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置 55 | 5. 机器以==运算器==为中心,输入输出设备与存储器间的数据传送通过运算器完成。 56 | 57 | 58 | 59 | ## 2.2 计算机的硬件图 60 | 61 | 现代的计算机已经转化为以==存储器==为中心,各部件的功能如下: 62 | - 运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内 63 | - 存储器用来存放数据和程序 64 | - 控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果 65 | - 输入设备来控制、指挥程序和数据的输入、运行以及处理运算结果 66 | - 输出设备可将人类熟悉的信息形式转换为机器能识别的信息形式 67 | 68 | 69 | 70 | 71 | 72 | 在大规模集成电路制作工艺出现后,将运算器和控制器结合起来统称为中央处理器(CPU),把输入设备与输出设备统称为I/O设备。这样,现代计算机由以下三部分组成: 73 | 74 | 1. CPU 75 | 2. I/O设备 76 | 3. 主存储器(MM) 77 | 78 | 79 | 而CPU与主存储器联合起来又可以称为主机,I/O设备又可以称为外部设备。 80 | 81 | 82 | 上图中,主存储器是存储器子系统中的一类,用来存放程序和数据,可以直接与CPU交换信息。另一类是辅助存储器,简称辅存,又称外存。 83 | 算术逻辑单元(ALU)简称算逻部件,用来完成算术逻辑运算。控制单元(CU)用来解释存储器中的命令,并发出各种操作命令来执行命令。 84 | 85 | ## 2.3 计算机的工作步骤 86 | 87 | 1. 上机前准备 88 | - 建立数学模型 89 | - 确定计算方法 90 | - 编制解题程序 91 | 2. 计算机的工作过程 92 | 先分析计算机组成框图 93 | 94 | 95 | - 主存储器 96 | 主存储器(简称==主存==或==内存==)包括存储体、各种逻辑部件及控制电路。 97 | 存储体M: 98 | 99 | - 存储体由许多存储单元组成,每个存储单元又包含若干个存储元件(或称存储基元、存储元),每个存储元件能寄存一位二进制代码 100 | - 一个存储单元可以存储一串二进制代码,称这串二级制代码为一个存储字,这串二进制代码的位数称为存储字长 101 | - 主存的工作方式就是按存储单元的地址号来实现对存储字各位的存(写入)、取(读出)。这种存取方式称为按地址存取方式,即按地址访问存储器(简称==访存==)。 102 | 103 | 为了实现按地址访问,主存中还配有两个寄存器MAR和MDR。 104 | MAR: 105 | - MAR是存储器地址寄存器,用来存放想要访问的存储单元地址,其位数对应存储单元的个数 106 | - 例如:MAR为10位,则有$2^{10}$=1024个存储单元,记为1K。 107 | 108 | MDR: 109 | - MDR是存储数据寄存器,用来存放从存储体某单元取出来的代码或者准备往某存储单元存入的代码,其位数与存储字长相等。 110 | 111 | - 运算器 112 | 运算器至少包含3个寄存器和一个算术逻辑单元(ALU)。其中ACC为累加器,MQ为乘商寄存器,X为操作数寄存器。在进行不同计算时,各寄存器所存放的操作数类别也各不相同。 113 | 114 | | | 加法 | 减法 | 乘法 | 除法 | 115 | | :--: | :--------: | :--------: | :------------: | :----------: | 116 | | ACC | 被加数及和 | 被减数及差 | 乘积高位 | 被除数及余数 | 117 | | MQ | | | 乘数及乘积低位 | 商 | 118 | | X | 加数 | 减数 | 被乘数 | 除数 | 119 | 120 | 以下简要分析各种运算的操作过程: 121 | - 加法 122 | [M]$\to$ X 123 | [ACC]+[X] $\to$ ACC 124 | - 减法 125 | [M]$\to$X 126 | [ACC]-[X]$\to$ACC 127 | - 乘法 128 | [M]$\to$MQ 129 | [ACC]$\to$X 130 | 0$\to$ACC 131 | [X]$\times$[MQ]$\to$ACC//MQ (//表示两个寄存器串联) 132 | - 除法 133 | [M]$\to$X 134 | [ACC] / [X]$\to$MQ 135 | 余数R在ACC中 136 | - 控制器 137 | 控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。一条指令的操作一般包含取指、分析、执行3个阶段: 138 | - 取指:命令存储器读出一条指令 139 | 140 | - 分析:对取出的指令进行分析,指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址 141 | 142 | - 执行:根据操作数所在的地址以及指令的操作码完成某种操作 143 | 控制器 144 | 145 | 控制器由程序计数器(PC)、指令寄存器(IR)以及控制单元(CU)组成。 146 | - PC:用来存放当前想要执行指令的地址,它与主存的MAR之间有一条直接通路,且具有自动加1的功能,即可自动形成下一条指令的地址 147 | - IR:用来存放当前的指令,IR的内容来自主存的MDR。 148 | 1. IR中的操作码(OP(IR))送至CU,记作OP(IR)$\to$CU,用来分析指令 149 | 2. 地址码(Ad(IR))作为操作数的地址送至存储器的MAR,记作Ad(IR)$\to$MAR - CU:用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控制的对象。 150 | 151 | 152 | 153 | # 3. 计算机硬件的主要指标技术 154 | ## 3.1 机器字长 155 | 156 | 是指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。字长越长,数的表示范围越大,精度也越高。机器字长也会影响及其的运行速度。 157 | 158 | ## 3.2 存储容量 159 | 160 | 存储器的容量应该包括存主存容量和辅存容量。 161 | - 主存容量是指主存中存放二进制代码的总位数,即 162 | $$ 163 | 存储容量=存储单元个数\times 存储字长 164 | $$ 165 | - MAR中的位数反映了存储单元的个数,MDR的位数反映了存储字长。 166 | 例如:MAR为16位,MDR为32位,则存储容量为$2^{16}\times 32=2M$位 167 | - 现代计算机通常以字节来描述容量大小,其中一个字节被定义为8位二进制代码。 168 | 例如:上述的$2M$位也可以用$2^{18}$字节表示,记作$2^{18}$B或256KB。 169 | 170 | 171 | ## 3.3 运行速度 172 | 1. 普通法:早期用完成一次加法或乘法所需的时间来衡量运算速度 173 | 2. 吉普森法:综合考虑每条指令的执行时间以及它们在全部操作中所占的百分比 174 | $$ 175 | T_M=\sum_{i=1}^nf_it_i 176 | $$ 177 | 其中$T_M$为机器运行速度;$f_i$为第$i$种指令占全部操作的百分比数;$t_i$为第$i$种指令的执行时间。 178 | 3. 现在的机器普遍使用单位时间内执行指令的平均条数来衡量,并用MIPS(百万指令每秒)作为计量单位;也可以用CPI即执行一条指令所需的时钟周期(机器主频的倒数)数;或者用FLOPS(浮点运算次数每秒)来衡量运算速度。 -------------------------------------------------------------------------------- /00 - Math/00 - advanced mathematics/ch05_定积分及其应用.md: -------------------------------------------------------------------------------- 1 | # 1. 定积分的概念 2 | ## 1.1 定积分的定义 3 | > @Definition 4 | > **定义1.1** 设函数$f(x)$在$[a,b]$上有界,在$[a,b]$上任意插入$n-1$个分点,$a=x_0 $$ 6 | > \lim_{\lambda\to 0}S=\lim_{\lambda \to 0}\sum_{i=1}^{n}f(\xi_i){\Delta x_i} 7 | > $$ 8 | > 存在,且与小区间的分法以及$\xi_i$的选取无关,则称函数$f(x)$在$[a,b]$上可积,并称此极限值为函数$f(x)$在$[a,b]$上的定积分,记作 9 | > $$ 10 | > \int_a^bf(x)dx=\lim_{\lambda \to 0}\sum_{i=1}^{n}f(\xi_i){\Delta x_i} 11 | > $$ 12 | > 其中,$a$与$b$分别称为积分的下限与上限,$[a,b]$称为积分区间,函数$f(x)$称为被积函数,$f(x)dx$称为被积表达式,$x$称为积分变量,$S$称为函数$f(x)$在$[a,b]$上的积分和,若$\lim_{\lambda \to 0}\sum_{i=1}^{n}f(\xi_i){\Delta x_i} 13 | $不存在,则称函数在$[a,b]$上不可积。 14 | 15 | > @Theorem 16 | > **定理1.1** 若$f(x)$是区间$[a,b]$上的连续函数,则函数$f(x)$在$[a,b]$上可积。 17 | 18 | > @Theorem 19 | > **定理1.2** 若$f(x)$是区间$[a,b]$上只有有限个间断点的有界函数,则函数$f(x)$在区间$[a,b]$上可积。 20 | 21 | 22 | > @Theorem 23 | > **定理1.3** 若$f(x)$是区间$[a,b]$上的单调函数,则函数$f(x)$在区间$[a,b]$上可积。 24 | 25 | 26 | ## 1.2 定积分的几何意义 27 | 1. 在区间$[a,b]$上,当$f(x)\ge 0$时,定积分$\int_a^bf(x)dx$的几何意义就是由连续曲线$y=f(x)\ge 0$及直线$x=a$,$x=b$,$y=0$所围成的曲边梯形的面积; 28 | 2. 在区间$[a,b]$上,当$f(x)\le 0$时,定积分$\int_a^bf(x)dx$的几何意义就是由连续曲线$y=f(x)\le 0$及直线$x=a$,$x=b$,$y=0$所围成的曲边梯形的面积的负值; 29 | 3. 在区间$[a,b]$上,当$f(x) $既可以取正值,又可以取负值时,定积分$\int_a^bf(x)dx$的几何意义就是$x$轴上方的面积减去$x$轴下方的面积所得之差。 30 | 31 | 32 | # 2 定积分的性质 33 | > @Property 34 | > **性质2.1(线性性质)** 若函数$f_1(x)$,$f_2(x)$在$[a,b]$上可积,则对$\forall k_1,k_2\in R$,函数$k_1f_1(x)+k_2f_2(x)$在$[a,b]$上可积,且 35 | > $$ 36 | >\int_a^b[ k_1f_1(x)+k_2f_2(x) ] = k_1\int_a^bf_1(x)dx+k_2\int_a^bf_2(x)dx 37 | > $$ 38 | 39 | 40 | > @Property 41 | > **性质2.2(区间的可加性)** 设$I$为一个有限的闭区间,$a,b,c\in I$,若函数在区间$I$上可积,则$f(x)$在$[a,b]$,$[b,c]$,$[c,b]$上均可积,且 42 | > $$ 43 | > \int_a^bf(x)dx = \int_a^cf(x)dx + \int_c^bf(x)dx 44 | > $$ 45 | 46 | > @Property 47 | > **性质2.3** 若函数$f_1(x)$,$f_2(x)$在$[a,b]$上可积,则乘积函数$f_1(x)f_2(x)$在$[a,b]$上可积 48 | 49 | 50 | > @Property 51 | > **性质2.4(积分不等式)** 若函数$f(x)$在$[a,b]$上可积,且$f(x)\ge 0(\le 0)$,$x\in [a,b]$,则$\int_a^bf(x)\ge0(\le 0)$。 52 | 53 | 54 | 55 | > @Property 56 | > **性质2.5** 若函数$f(x)$在$[a,b]$上可积,则函数$|f(x)|$在$[a,b]$上可积,且 57 | > $$ 58 | > |\int_a^bf(x)dx| \le \int_a^b|f(x)|dx 59 | > $$ 60 | 61 | 62 | > @Property 63 | > **性质2.6(第一积分中值定理)** 若函数$f(x)$在区间$[a,b]$上连续,函数$g(x)$在区间$[a,b]$上可积且不变号,则在$[a,b]$上至少存在一点$\xi$,使得 64 | > $$ 65 | > \int_a^bf(x)g(x)dx=f(\xi)\int_a^bg(x)dx 66 | > $$ 67 | 68 | 69 | # 3. 定积分的计算 70 | ## 3.1 变限积分与原函数的存在性 71 | 假设函数$f(x)$在区间$[a,b]$上连续,则$\forall x\in [a,b]$,函数在子区间$[a,x]$上也可积,于是有唯一的积分值$\int_a^xf(t)dt$与$x$对应,这个积分确定了一个定义在$[a,b]$上的函数,记作 72 | $$ 73 | F(x)=\int_a^xf(t)dt 74 | $$ 75 | 并称之为函数$f(x)$的变上限积分 76 | 77 | > @Theorem 78 | > **定理3.1(原函数存在定理)** 如果函数$f(x)$在区间$[a,b]$上连续,则变上限积分函数 79 | > $$ 80 | > \int_a^bf(x)g(x)dx=f(\xi)\int_a^bg(x)dx 81 | > $$ 82 | > 在区间$[a,b]$上可导,且$F'(x)=f(x)$ 83 | 84 | 85 | > @Theorem 86 | > **定理3.2(牛顿-莱布尼茨公式)** 如果函数$F(x)$ 是连续函数$f(x)$在$[a,b]$上的一个原函数,则 87 | > $$ 88 | > \int_a^bf(x)dx=F(b)-F(a) 89 | > $$ 90 | 91 | ## 3.2 定积分的换元积分法 92 | > @Theorem 93 | > **定理3.3** 若函数$f(x)$在区间$[a,b]$上连续,函数$x=\varphi(t)$满足下列条件 94 | > - $\varphi(t)$在$[\alpha, \beta]$上具有连续导数 95 | > - $\varphi(\alpha)=a$,$\varphi(\beta)=b$,且当$t$在$[\alpha, \beta](或[\beta, \alpha])$上变化时,$x=\varphi(t)$的值在区间$[a,b]$上变化,则 96 | > $$ 97 | > \int_a^bf(x)dx = \int_\alpha^\beta f[\varphi(t)]\varphi'(t)dt 98 | > $$ 99 | > 称为定积分的换元积分公式 100 | 101 | 102 | 以下是定积分的换元公式的应用 103 | 1. 设函数$f(x)$在区间$[-a,a]$上连续,则 104 | - 当$f(x)$为偶函数时,$\int_{-a}^{a}f(x) dx = 2\int_{0}^{a}f(x)dx$ 105 | - 当$f(x)$为奇函数时,$\int_{-a}^{a}f(x) dx= 0$ 106 | 107 | 2. 设函数$f(x)$是以$T$为周期的连续函数,$a,b$为任意实数,则 108 | - $\int_{a+T}^{b+T}f(x) dx = \int_{a}^{b}f(x) dx$ 109 | - $\int_{a}^{a+T}f(x) dx = \int_{0}^{T}f(x) dx$ 110 | 111 | 112 | ## 3.3 定积分的分部积分法 113 | 设函数$u=u(x)$,$v=v(x)$在区间$[a,b]$上具有连续的导数,则 114 | $$ 115 | \int_a^buv'dx=[uv]_a^b-\int_a^bu'vdx 116 | $$ 117 | 或 118 | $$ 119 | \int_a^budv=[uv]_a^b-\int_a^bvdu 120 | $$ 121 | 就是定积分的分部积分公式 122 | 123 | # 4. 反常积分 124 | ## 4.1 无穷区间上的反常积分 125 | 126 | > @Definition 127 | > **定义4.1** 128 | > 1. 设函数$f(x)$的定义区间是$[a,+\infty)$,且对任意的$A>a$,函数$f(x)$在区间$[a,A]$上可积。如果极限$\lim_{A\to +\infty}\int_a^Af(x)dx$存在,则称函数$f(x)$在无穷区间$[a,+\infty)$上的反常积分$\int_a^{+\infty}f(x)dx$收敛,并把此极限称为该反常积分的值,即 129 | > $$ 130 | > \int_a^{+\infty}f(x)dx = \lim_{A\to +\infty}\int_a^Af(x)dx 131 | > $$ 132 | > 如果上述极限不存在,则称反常积分$\int_a^{+\infty}f(x)dx$发散。 133 | > 2. 设函数$f(x)$的定义区间是$(-\infty, b]$,且对任意的$B>b$,函数$f(x)$在区间$[B,b]$上可积。如果极限$\lim_{B\to -\infty}\int_B^bf(x)dx$存在,则称函数$f(x)$在无穷区间$(-\infty, b]$上的反常积分$\int_{-\infty}^bf(x)dx$收敛,并把此极限称为该反常积分的值,即 134 | > $$ 135 | > \int_{-\infty}^bf(x)dx = \lim_{B\to -\infty}\int_B^bf(x)dx 136 | > $$ 137 | > 如果上述极限不存在,则称反常积分$\int_{-\infty}^bf(x)dx$发散。 138 | > 3. 设函数$f(x)$的定义区间是$(-\infty, +\infty)$,$c$为任意实数。如果反常积分$\int_{-\infty}^cf(x)dx$和$\int_{c}^{+\infty}f(x)dx$同时收敛,则称函数$f(x)$在无穷区间$(-\infty, +\infty)$上的反常积分$\int_{-\infty}^{+\infty}f(x)dx$收敛,且定义其值为: 139 | > $$ 140 | > \int_{-\infty}^{+\infty}f(x)dxlk=\int_c^{+\infty}f(x)dx + \int_{-\infty}^cf(x)dx = \lim_{B\to -\infty}\int_B^cf(x)dx + \lim_{A\to +\infty}\int_c^Af(x)dx 141 | > $$ 142 | 143 | ## 4.2 无界函数的反常积分 144 | 一般的,如果函数$f(x)$在点$x_0$的任一邻域内都无界,则称点$x_0$为函数$f(x)$的瑕点,无界函数的反常积分也称为瑕积分。 145 | > @Definition 146 | > **定义4.2** 147 | > 1. 设函数$f(x)$的定义区间是$(a,b]$,点$x=a$为函数的瑕点,且对任意的$\varepsilon>0$,函数$f(x)$在区间$[a+\varepsilon, b]$上可积。如果极限$\lim_{\varepsilon\to 0^+}\int_{a+\varepsilon}^bf(x)dx$存在,则称函数$f(x)$在区间$[a,b]$上的反常积分$\int_a^{b}f(x)dx$收敛,并把此极限称为该反常积分的值,即 148 | > $$ 149 | > \int_a^{b}f(x)dx = \lim_{\varepsilon\to 0^+}\int_{a+\varepsilon}^bf(x)dx 150 | > $$ 151 | > 如果上述极限不存在,则称反常积分$\int_a^{b}f(x)dx$发散。 152 | > 2. 设函数$f(x)$的定义区间是$[a, b)$,点$x=b$为函数的瑕点,且对任意的$\varepsilon>0$,函数$f(x)$在区间$[a,b-\varepsilon]$上可积。如果极限$\lim_{\varepsilon\to 0^+}\int_a^{b-\varepsilon}f(x)dx$存在,则称函数$f(x)$在区间$[a, b)$上的反常积分$\int_{a}^bf(x)dx$收敛,并把此极限称为该反常积分的值,即 153 | > $$ 154 | > \int_{a}^bf(x)dx = \lim_{\varepsilon\to 0^+}\int_a^{b-\varepsilon}f(x)dx 155 | > $$ 156 | > 如果上述极限不存在,则称反常积分$\int_{-\infty}^bf(x)dx$发散。 157 | > 3. 设函数$f(x)$的定义区间是$[a,c)\cup(c,b]$,点$x=c$为函数的瑕点。如果反常积分$\int_{a}^cf(x)dx$和$\int_{c}^{b}f(x)dx$同时收敛,则称函数$f(x)$在区间$[a,b]$上的反常积分$\int_{a}^{b}f(x)dx$收敛,且定义其值为: 158 | > $$ 159 | > \int_{a}^{b}f(x)dxlk=\int_a^{c}f(x)dx + \int_{c}^bf(x)dx = \lim_{\varepsilon\to 0^+}\int_a^{c-\varepsilon}f(x)dx + \lim_{\eta\to 0^+}\int_{c-\eta}^bf(x)dx 160 | > $$ 161 | -------------------------------------------------------------------------------- /00 - Math/01 - probability theory and mathematical statistics/ch07_参数估计.md: -------------------------------------------------------------------------------- 1 | # 1. 参数估计的基本概念 2 | 如果总体分布的形式是已知的,但它含有一个或多个未知参数,利用来自总体的样本信息估计这些未知参数的问题就是参数估计问题。 3 | 4 | 设总体 $X$ 的分布函数形式已知, $\theta$ 是其未知参数 $X_1, X_2,\cdots, X_n$ 是来自总体 $X$ 的样本, $x_1,x_2\cdots, x_n$ 是样本的值。 5 | 1. 点估计是构造一个适当的统计量 $\hat{\theta }= T(X_1, X_2, \cdots, X_n)$, 使其样本值 $T(x_1,x_2,\cdots,)$ 有理由作为未知参数 $\theta$ 的估计值。这时称统计量 $\hat{\theta }= T(X_1, X_2, \cdots, X_n)$ 为$\theta$ 的点估计量, 简称为 $\theta$ 的点估计,它的观测值 $T(x_1,x_2,\cdots,)$ 称为 $\theta$ 的点估计值 6 | 2. 如果对 $\theta$ 的有界区间的估计,需要构造两个适当的统计量 $\hat{\theta_1 }= T_1(X_1, X_2, \cdots, X_n)$ 和 $\hat{\theta_2 }= T_2(X_1, X_2, \cdots, X_n)$ , 它们构成一个随机区域 $(\hat{\theta_1}, \hat{\theta_2})$, 并用它们的样本值 $\hat{\theta_1} = T_1(x_1,x_2,\cdots,)$ 与 $\hat{\theta_2} = T_2(x_1,x_2,\cdots,)$ 所构成的区间 $(\hat{\theta_1}, \hat{\theta_2})$ 来估计未知参数的范围。这个区间应满足: 7 | - 要以较大的概率(置信度) 包含未知参数 $\theta$ 8 | - 保证区间长度 $|\hat{\theta_1}-\hat{\theta_2}|$ 尽可能小, 即估计的精度尽可能高 9 | 10 | # 2. 点估计 11 | ## 2.1 矩法 12 | 用样本矩代替相应的总体矩所得到的未知参数的点估计称为矩估计,矩估计的样本值称为矩估计值。例如: 13 | 1. 对总体 $X$ 的 $l$ 阶原点矩 $EX^l(l=1,2,\cdots,k)$, 这类参数可用样本的 $l$ 阶原点矩 $M_i$ 的样本值估计,即 14 | $$ 15 | \hat{E}X^l = M_l=\frac{1}{n} \sum_{i=1}^{n}X_i^l, l=1,2,\cdots, 16 | $$ 17 | 2. 总体的中心矩可以用样本的 $l$ 阶中心矩估计,即 18 | $$ 19 | \hat{E}(X-EX)^l = M_l^*=\frac{1}{n} \sum_{i=1}^n(X_i-\overline{X})^2, l=1,2,\cdots, k 20 | $$ 21 | 22 | ## 2.2 最大似然法 23 | 24 | 设 $\theta_1,\theta_2, \cdots, \theta_k$ 是总体 $X$ 的未知参数, $\Theta$ 是参数 $\theta_1,\theta_2, \cdots, \theta_k$ 的可能取值范围,称为参数空间, $X_1,X_2,\cdots, X_n$ 是来自总体 $X$ 的样本, $x_1,x_2,\cdots, x_n$ 是样本的一个观测值, 下面是极大似然估计的求法 25 | 1. 对给定的样本观测值 $x_1,x_2,\cdots, x_n$ ,计算似然函数 26 | $$ 27 | L(\theta_1,\theta_2, \cdots, \theta_k;x_1,x_2,\cdots, x_n) = 28 | \begin{cases} 29 | \prod_{i=1}^n P\{X=x_i\}, & 当总体 X 是离散时 \\ 30 | \prod_{i=1}^nf(x_i) , & 当总体X是连续时 31 | \end{cases} 32 | $$ 33 | 2. 求未知参数 $\theta_1,\theta_2, \cdots, \theta_k$ 的最大似然估计值 $\hat{\theta_l}=\hat{\theta_l}(x_1,x_2,\cdots,x_n),l=1,2\cdots, k$,即 $\theta_1,\theta_2, \cdots, \theta_k$ 在样本空间 $\Theta$ 内让似然函数 $L(\theta_1,\theta_2, \cdots, \theta_k;x_1,x_2,\cdots, x_n)$ 达到最大值,也就是求 34 | $$ 35 | \max_{(\theta_1,\theta_2, \cdots, \theta_k)\in \Theta} L(\theta_1,\theta_2, \cdots, \theta_k; x_1,x_2,\cdots, x_n) 36 | $$ 37 | 将最大似然估计值 $\hat{\theta_l}=\hat{\theta_l}(x_1,x_2,\cdots, x_n), l=1,2,\cdots,k$ 表达式中的$x_1,x_2,\cdots, x_n$ 换成样本 $X_1,X_2,\cdots, X_n$ , 得到的统计量 $\hat{\theta_l}(X_1, X_2,\cdots, X_n), l=1,2,\cdots,k$ 称为参数 $\theta_l$ 的最大似然估计。 38 | 3. 因为似然函数与对数似然函数在 $\Theta$ 内同一点达到最大值,所以 $\theta_1,\theta_2, \cdots, \theta_k$ 的最大似然估计值可以通过如下问题求得: 39 | $$ 40 | \max_{(\theta_1,\theta_2, \cdots, \theta_k)\in \Theta} \ln L(\theta_1,\theta_2, \cdots, \theta_k; x_1,x_2,\cdots, x_n) 41 | $$ 42 | 上式一般转化为下列似然方程组: 43 | $$ 44 | \frac{\partial \ln L(\theta_1, \theta_2,\cdots, \theta_k; x_1, x_2,\cdots, x_n)}{\partial \theta_l}=0, l=1,2,\cdots, k 45 | $$ 46 | 47 | 48 | # 3. 估计优劣的评价标准 49 | ## 3.1 无偏性 50 | > @Definition 51 | > **定义3.1** 设总体为 $X$ , $\theta$ 是未知参数, $\theta\in \Theta$, 假设 $\hat{\theta_n}=\hat{\theta}(X_1,X_2,\cdots, X_n)$ 是 $\theta$ 的一个估计, 如果对任意 $\theta\in \Theta$ 均有 $E(\hat{\theta_n}-\theta)=0$, 则称 $\hat{\theta_n}$ 是 $\theta$ 的无偏估计。 52 | > 如果对任意 $\theta\in\Theta$ ,均有 $\lim_{n\to+\infty} E(\hat{\theta_n}-\theta)=0$ ,则称 $\hat{\theta}$ 是 $\theta$ 的渐进无偏估计。 53 | 54 | ## 3.2 有效性 55 | > @Definition 56 | > **定义3.2** 设 $\hat{\theta_1},\hat{\theta_2}$ 都是未知参数 $\theta$ 的无偏估计, 如果 $D\hat{\theta_1} @Definition 59 | > **定义3.3** 设 $\hat{\theta^*}$ 是未知参数 $\theta$ 的无偏估计, 如果对 $\theta$ 的任一无偏估计 $\hat{\theta}$, 都有 60 | > $$ 61 | > D\hat{\theta^*} \le D\hat{\theta} (对一切 n 和任意 \theta \in \Theta) 62 | > $$ 63 | > 则称 $\hat{\theta^*}$ 为 $\theta$ 的最小方差无偏估计或最优无偏估计。 64 | 65 | 比有效性更广泛使用的评价标准是均方误差: 66 | $$ 67 | \text{MSE} (\hat{\theta}, \theta) = E(\hat{\theta}-\theta)^2 68 | $$ 69 | 均方差反映了估计的全部估计值与参数真实值之间平均偏差。其有如下性质 70 | $$ 71 | \text{MSE}(\hat{\theta}, \theta) = D\hat{\theta} +E(\hat{\theta}-\theta)^2 72 | $$ 73 | 74 | 75 | ## 3.3 相合性 76 | > @Definition 77 | > **定义3.4** 设 $\hat{\theta_n}$ 是未知参数 $\theta$ 的估计, 如果当样本容量 $n\to+\infty$ 时, $\hat{\theta_n}$ 依概率收敛于 $\theta$ , 即 $\hat{\theta_n}\stackrel{P}{\overrightarrow{n\to+\infty}}\theta$,则称 $\hat{\theta_n}$ 为 $\theta$ 的相合估计或一致估计。 78 | 79 | 80 | > @Theorem 81 | > **定理3.1** 设 $\hat{\theta_n}$ 是未知参数 $\theta$ 的一个点估计, 如果 $\lim_{n\to+\infty}E\hat{\theta_n}=\theta$, 且 $\lim_{n\to+\infty}D\hat{\theta_n}=0$, 则 $\hat{\theta_n}$ 是 $\theta$ 的相合估计。 82 | 83 | 84 | 85 | > @Theorem 86 | > **定理3.2** 87 | > 1. 如果总体 $X$ 的 $k(k<1)$ 阶原点矩 $EX^k$ 存在,则样本的 $k$ 阶原点矩 $M_k$ 是 $EX^k$ 的相合估计。 88 | > 2. 设 $g(x)$ 是 $x$ 的连续函数, 如果 $\hat{\theta_n}$ 是 $\theta$ 的相合估计, 则 $g(\hat{\theta})$ 是 $g(\theta)$ 的相合估计。 89 | 90 | 91 | # 4. 区间估计 92 | ## 4.1 置信区间 93 | > @Definition 94 | > **定义4.1** 设总体 $X$ 的分布函数为 $F(x,\theta)$, $\theta$ 为未知参数, $X_1,X_2,\cdots, X_n$ 是总体 $X$ 的样本。对给定值 $\alpha (0<\alpha< 1)$, 如果存在两个统计量 $T_1=T_1(X_1, X_2,\cdots, X_n)$ 和 $T_2=T_2(X_1,X_2,\cdots, X_n)$ 满足: 95 | > $$ 96 | > P\{T_1<\theta $$ 98 | > 则称随机区间 $(T_1, T_2)$ 为未知参数 $\theta$ 的一个置信度为 $1-\alpha$ 的置信区间, $T_1$ 和 $T_2$ 分别称为置信下限和置信上限。 99 | 100 | 置信区间与置信度相互制约, 一般遵循如下原则: 101 | 先保证对置信度的要求,在此条件下尽可能降低估计误差。 102 | 103 | 104 | ## 4.2 单个正态总体的参数的置信区间 105 | 设总体 $X\sim N(\mu, \sigma^2), X_1,X_2, \cdots, X_n$ 是来自总体的样本, $\overline{X}$ 是样本均值, $S^2$ 是样本方差, 下面讨论置信度为 $1-\alpha$ 时, 参数 $\mu$ 和 $\sigma^2$ 的置信区间。 106 | ### 4.2.1 参数 $\mu$ 的置信区间 107 | 1. 当 $\sigma^2$ 已知时 108 | 由于有 $U=\frac{\overline{X}-\mu}{\sigma}\sqrt{n}\sim N(0,1)$,则参数 $\mu$ 的置信度为 $1-\alpha$ 的置信区间是 109 | $$ 110 | (\overline{X} -\frac{\sigma}{\sqrt{n}}u_{1-\frac{\alpha}{22}}, \overline{X}+\frac{\sigma}{\sqrt{n}}u_{1-\frac{\alpha}{22}}) 111 | $$ 112 | 2. 当 $\sigma^2$ 未知时 113 | 因为 $T=\frac{\overline{X}-\mu}{S}\sqrt{n}\sim t(n-1)$, 则 $mu$ 的置信度为 $1-\alpha$ 的置信区间为 114 | $$ 115 | (\overline{X} -\frac{S}{\sqrt{n}}t_{1-\frac{\alpha}{2}}(n-1), \overline{X} +\frac{S}{\sqrt{n}}t_{1-\frac{\alpha}{2}}(n-1)) 116 | $$ 117 | 118 | ### 4.2.2 参数 $\sigma^2$ 的置信区间 119 | 因为 $\chi^2=\frac{(n-1)^2S^2}{\sigma^2}\sim \chi^2(n-1)$, 因此方差 $\sigma^2$ 的置信度为 $1-\alpha$ 的置信区间为 120 | $$ 121 | (\frac{(n-1)S^2}{\chi^2_{1-\frac{\alpha}{2}}(n-1)}, \frac{(n-1)S^2}{\chi^2_{\frac{\alpha}{2}}(n-1)}) 122 | $$ 123 | 124 | 标准差 $\sigma$ 的置信度为 $1-\alpha$ 的置信区间为 125 | $$ 126 | (\sqrt{\frac{(n-1)S^2}{\chi^2_{1-\frac{\alpha}{2}}(n-1)}}, \sqrt{\frac{(n-1)S^2}{\chi^2_{\frac{\alpha}{2}}(n-1)}}) 127 | $$ 128 | 129 | 130 | 如果总体均值 $\mu$ 已知, 令 $S_1^2=\frac{1}{n}\sum_{i=1}^n(X_i-\mu)^2$, 则 $\chi^2=\frac{nS_1^2}{\sigma^2}\sim \chi^2(n)$ , 此时 $\sigma^2$ 的置信度为 $1-\alpha$ 的置信区间为 131 | $$ 132 | (\frac{nS_1^2}{\chi^2_{1-\frac{\alpha}{2}}(n)}, \frac{nS_1^2}{\chi^2_{\frac{\alpha}{2}}(n)}) 133 | $$ 134 | 135 | ## 4.3 比率 $p$ 的置信区间 136 | 当 $n\to+\infty$ 时, 有 $\frac{\overline{X}-p}{\sqrt{\overline{X}(1-\overline{X})}}\sqrt{n}\stackrel{近似}{\sim} N(0,1)$, 则未知参数 $p$ 的置信度为 $1-\alpha$ 的置信区间为 137 | $$ 138 | (\overline{X} - u_{1-\frac{\alpha}{2}}\sqrt{\frac{\overline{X}(1-\overline{X})}{n}}, \overline{X}+u_{1-\frac{\alpha}{2}}\sqrt{\frac{\overline{X}(1-\overline{X})}{n}}) 139 | $$ 140 | 141 | -------------------------------------------------------------------------------- /00 - Math/01 - probability theory and mathematical statistics/ch06_数理统计的基本概念.md: -------------------------------------------------------------------------------- 1 | # 1. 总体与样本 2 | 3 | 1. 通常,把一个统计问题中的研究对象的全体称为总体,.组成中体的每个成员称为个体。 4 | 2. 用一个概率分布描述总体,数量属性就是服从于这个概率分布的随机变量,该最忌变量的分布称为总体分布 5 | 3. 用一个随机变量表示总体,这个随机变量及其概率分布代表了总体所对应的那个属性的数据集合 6 | 4. 为了研究总体的某些性质或特征,需要从总体中随机抽取 $n$ 个个体进行观测,称之为样本, $n$ 为样本容量。 7 | 5. 在统计推断方法中,要求样本 $X_1,X_2,\cdots, X_n$ 是简单样本 8 | - 独立性 样本 $X_1,X_2,\cdots, X_n$ 为相互独立的一组随机变量 9 | - 代表性 样本 $X_1,X_2,\cdots, X_n$ 中的每个随机变量 $X_i(i=1,2,\cdots, n)$ 与总体 $X$ 之间具有下同概率分布。 10 | 6. 所有样本组成的集合 $\varOmega$ 称为样本空间。 11 | 12 | 13 | # 2. 统计量 14 | > @Definition 15 | > **定义2.1** 设 $X_1,X_2,\cdots, X_n$ 为来自总体 $X$ 的样本, $T(x_1,x_2,\cdots, x_n)$ 是 $n$ 元连续函数,且不含任何未知参数,则称随机变量 $T(X_1, X_2,\cdots, X_n)$ 为一个统计量。 16 | 17 | ## 2.1 样本矩统计量 18 | 设 $X_1,X_2,\cdots, X_n$ 为来自总体 $X$ 的样本,常见的样本矩统计量为: 19 | 1. 样本均值 $\overline{X} = \frac{1}{n} \sum_{i=1}^{n}X_i$ 20 | 2. 样本方差 $s^2=\frac{1}{n-1}\sum_{i=1}^{n} (x_i-\overline{x})^2$ 21 | 标准方差 $S=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n} (x_i-\overline{x})^2}$ 22 | 3. 样本 $k$ 阶原点矩 $M_k=\frac{1}{n}\sum_{i=1}^nX_i^k, k=1,2,\cdots$ 23 | 4. 样本 $k$ 阶中心矩 $M_k^*= \frac{1}{n} \sum_{i=1}^n(X_i-\overline{X})^k, k=2,3\cdots$ 24 | 25 | 由上可得: 26 | - $M_1=\overline{X}$ 27 | - $S^2=\frac{n}{n-1}M_2^*$ 28 | - $M_2^* = \frac{1}{n}\sum_{i=1}^nX_i^2-\overline{X}^2$ 29 | 30 | 31 | 样本均值 $\overline{X}$ 和 样本方差 $S^2$ 具有如下性质: 32 | > @Property 33 | > **性质** 34 | > 1. $\sum_{i=1}^n(X_i-\overline{X}) = 0$ 35 | > 2. 若总体 $X$ 的均值 $EX$, 方差 $DX$ 均存在, 则 36 | > $E\overline{X} = EX, D\overline{X} = \frac{1}{n} DX, EM_2* = \frac{n-1}{n}DX, ES^2= DX$ 37 | > 3. 当 $n\to +\infty$ 时, $\overline{X} \stackrel{P}{\longrightarrow}EX$ 38 | > 4. 对任意实数 $x$ , 有 $\sum_{i=1}^n (X_i-\overline{X})^2\le \sum_{i=1}^n(X_i-x)^2$ 39 | 40 | 41 | ## 2.2 顺序统计量 42 | > @Definition 43 | > **定义2.2** 设 $X_1,X_2,\cdots, X_n$ 是来自总体 $X$ 的样本, 对给定的一组样本观测值 $x_1,x_2,\cdots, x_n$,按从小到大的顺序排列,用 $x_{(k)}, k=1,2\cdots, n$ 表示大小位置在第 $k$ 位数, 则 $x_{(k)}$ 的全部取值就对应一个随机变量,记为 $X_{(k)}, k=1,2,\cdots, n$, 称 $X_{(1)}, X_{(2)},\cdots, X_{(n)}$ 为样本 $X_1, X_2, \cdots, X_n$ 的顺序统计量。 44 | > 特别的, 称 $X_{(1)} = \text{min} \{X_1,X_2,\cdots, X_n\}$ 为最小顺序统计量; 称 $X_{(n)} = \text{max} \{X_1,X_2,\cdots, X_n\}$ 为最大顺序统计量。 45 | > 令 46 | > $$ 47 | > R= X_{(n)} - X_{(1)} 48 | > $$ 49 | > $$ 50 | > \widetilde{X} = 51 | > \begin{cases} 52 | > X_{(\frac{n+1}{2})}, \quad & 当 n 为奇数时 \\ 53 | > \frac{1}{2}(X_{(\frac{n}{22})}+X_{(\frac{n}{2}+1)}) \quad & 当 n 为偶数时 54 | > \end{cases} 55 | > $$ 56 | > 称 $R$ 为样本极差,反映了取值的分散程度。 57 | > 称 $\widetilde{X}$ 为样本中位数,反映了样本在试验上分布的位置特征。 58 | 59 | 60 | # 3. 经验分布函数与直方图 61 | ## 3.1 经验分布函数 62 | 假设总体 $X$ 的分布函数 $F(x)$ 未知, $x_1,x_2,\cdots, x_n$ 是来自 $X$ 的一组样本值。将 $x_1,x_2,\cdots, x_n$ 按有小到大的顺序排序,其结果记为 $x_{(1)}\le x_{(2)}\le\cdots\le x_{(n)}$,对任意给定的一个实数 $x$ ,记 63 | $$ 64 | F_n(x) = 65 | \begin{cases} 66 | 0, & x @Definiton 90 | > **定义4.1** 设 $X_1,X_2,\cdots, X_n$ 为 $n$ 个相互独立且都服从标准正态分布 $N(0,1)$ 的随机变量, 记 $\chi^2=\sum_{i=1}^nX_i^2$, 则称统计量 $\chi^2$ 服从自由度为 $n$ 的 $\chi^2$ 分布,记为 $\chi^2\sim \chi^2(n)$ 91 | > $\chi^2$ 分布的密度函数为 92 | > $$ 93 | > f(x) = 94 | > \begin{cases} 95 | > \frac{1}{2^{\frac{n}{2}}\varGamma(\frac{n}{2})} x^{\frac{n}{2}-1} e^{-\frac{x}{2}}, & x>0 \\ 96 | > 0, & x\le 0 97 | > \end{cases} 98 | > $$ 99 | 100 | $\chi^2$ 分布具有如下两个性质: 101 | 1. 设 $\chi^2\sim \chi^2(n)$, 则 $E\chi^2=n, D\chi^2=2n$ 102 | 2. 设 $\chi^2_1\sim \chi_1^2(n_1), \chi_2^2\sim\chi^2(n_2)$,且 $\chi_1^2 与 \chi_2^2$ 相互独立,则 $\chi_1^2+\chi_2^2\sim \chi^2(n_1+n_2)$ 103 | 104 | 105 | ### 4.1.2 $t$ 分布 106 | > @Definition 107 | > **定义4.2** 设 $X\sim N(0,1), Y\sim \chi^2(n)$, 且 $X$ 与 $Y$ 相互独立, 记 108 | > $$ 109 | > T= \frac{X}{\sqrt{Y/n}} 110 | > $$ 111 | > 则称 $T$ 的分布为自由度为 $n$ 的 $t$ 分布,记为 $T\sim t(n)$。 112 | > $t$ 的密度函数为 113 | > $$ 114 | > f(x) = \frac{\varGamma(\frac{n+1}{2})}{\sqrt{n\pi}\varGamma(\frac{n}{22})} (1+\frac{x^2}{n})^{-\frac{n+1}{2}}, x\in R 115 | > $$ 116 | 117 | 118 | $t$ 分布具有如下性质: 119 | 1. $f(x)$ 的图形关于 $y$ 轴对称(x=0), 当 $n>1$ 时, $ET=0$ 120 | 2. 当 $n>2$ 时, $DT=\frac{n}{n-2}$ 121 | 3. 当 $n=1$ 时, $T$ 的密度函数为 122 | $$ 123 | f(x) = \frac{1}{\pi}\cdot \frac{1}{1+x^2}, x\in R 124 | $$ 125 | 4. 当 $n\to +\infty$ 时, $f(x) \to \frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}, x\in R$。 126 | 127 | 128 | ### 4.1.3 $F$ 分布 129 | > @Definition 130 | > **定义4.3** 设 $X\sim \chi^2(m), Y\sim \chi^2(n)$, 且 $X$ 与 $Y$ 独立, 记 131 | > $$ 132 | > F= \frac{X/m}{Y/n} 133 | > $$ 134 | > 则称 $F$ 的分布为第一自由度是 $m$ , 第二自由度是 $n$ 的 $F$ 分布, 记为 $F\sim F(m,n)$ 135 | > $F$ 的密度函数为: 136 | > $$ 137 | > f(x) = 138 | > \begin{cases} 139 | > \frac{\varGamma(\frac{m+n}{2})}{\varGamma(\frac{m}{2})\varGamma(\frac{n}{2})} (\frac{m}{n})^\frac{m}{2}x^{\frac{m}{2}-1} (1+\frac{mx}{n})^{-\frac{n+m}{2}} ,& x>0 \\ 140 | > 0, & x\le 0 141 | > \end{cases} 142 | > $$ 143 | 144 | $F$ 分布具有如下性质: 145 | 1. 当 $F\sim F(m,n) 时, \frac{1}{F}\sim F(n,m)$ 146 | 2. 当 $T\sim t(n)$ 时,$T^2\sim F(1,n)$ 147 | 148 | 149 | ## 4.2 抽样分布定理 150 | > @Theorem 151 | > **定理4.1** 设总体 $X\sim N(\mu, \sigma^2)$, $X_1,X_2, \cdots, X_n$ 为来自 $X$ 的样本, $\overline{X},S^2$ 分别为样本均值和样本方差,则 152 | > 1. $\overline{X}\sim N(\mu, \frac{\sigma^2}{n})$ 或 $\frac{\overline{X}-\mu}{\sigma}\sim N(0,1)$ 153 | > 2. $\frac{(n-1)S^2}{\sigma^2} = \frac{1}{\sigma^2}\sum_{i=1}^n(X_i-\overline{X})^2\sim \chi^2(n-1)$ 154 | > 3. $\overline{X}$ 与 $S^2$ 相互独立 155 | 156 | 157 | > @Theorem 158 | > **定理4.2** 设 $X_1,X_2, \cdots, X_n$ 为来自总体 $X\sim N(\mu, \sigma^2)$ 的样本, $\overline{X}, S^2$ 分别为样本均值和样本方差,则 159 | > 1. $\frac{\overline{X}-\mu}{S}\sqrt{n}\sim t(n-1)$ 160 | > 2. $ES^2=\sigma^2, DS=\frac{2\sigma^4}{n-1}$ 161 | 162 | 163 | > @Theorem 164 | > **定理4.3** 设 $X_1,X_2, \cdots, X_m$ 为来自总体 $X\sim N(\mu_1, \sigma_1^2)$ 的样本, $Y_1,Y_2, \cdots, Y_n$ 为来自总体 $Y\sim N(\mu_2, \sigma_2^2)$ 的样本, 且两个样本相互独立,令 165 | > $$ 166 | > \begin{align*} 167 | > &\overline{X} = \frac{1}{m} \sum _{i=1}^mX_i \\ 168 | > & \overline{Y} = \frac{1}{n} \sum_{i=1}^nY_i \\ 169 | > &S_X^2 = \frac{1}{m-1}\sum_{i=1}^m(X_i-\overline{X})^2 170 | > & S_Y^2 = \frac{1}{n-1}\sum_{j=1}^n(Y_j-\overline{Y})^2 171 | > \end{align*} 172 | > $$ 173 | > 则: 174 | > 1. $F=\frac{S_X^2/S_Y^2}{\sigma_1^2/\sigma_2^2}\sim F(m-1, n-1)$ 175 | > 2. 当 $\sigma_1=\sigma_2=\sigma$ 时, 176 | > $$ 177 | > T=\frac{(\overline{X}-\overline{Y}-(\mu_1-\mu_2))}{S_w\sqrt{\frac{1}{n}+\frac{1}{m}}} 178 | > $$ 179 | > 其中, $S_w^2= \frac{(m-1)S_X^2+(n-1)S_Y^2}{m+n-2}$ 180 | 181 | 182 | ## 4.3 分位数 183 | > @Definition 184 | > **定义4.** 设 $X$ 是连续型随机变量,分布函数为 $F(x)$, 密度函数为 $f(x)$, 对于给定的概率 $p$, 如有实数 $v_p$, 使得 185 | > $$ 186 | > F(v_p) = P\{X\le v_p\} =\int_{-\infty}^{v_p} dx = p 187 | > $$ 188 | > 则称 $v_p$ 为随机变量 $X$ 的(下侧) $p$ 分位数。 189 | 190 | 将标准正态分布、$\chi^2$ 分布、$t$ 分布, $F$ 分布的分位数分别记为 $u_p, t_p(n), \chi^2_p(n), F_p(m,n)$, 它们有如下性质: 191 | 1. $u_{0.5} =0, -u_p=u_{1-p}, 0 @Definition 4 | > **定义1.1** 设 $V$ 是一个非空集合, $R$ 为实数域, 对任意两个元素 $\boldsymbol{\alpha},\boldsymbol{\beta}\in V$, 在 $V$ 中总有唯一确定的一个元素 $\boldsymbol{\gamma}$ 与之对应,称为 $\boldsymbol{\alpha}$ 与 $\boldsymbol{\beta}$ 的和, 记为 $\boldsymbol{\gamma}=\boldsymbol{\alpha} +\boldsymbol{\beta}$。 5 | > 对于 $R$ 中的任一数 $\lambda$ 与 $V$ 中任一元素 $\boldsymbol{\alpha}$, 在 $V$ 中总有唯一确定的一个元素 $\boldsymbol{\delta}$ 与之对应,称 $\lambda$ 与 $\boldsymbol{\alpha}$ 的数量乘积, 记为 $\boldsymbol{\delta} = \lambda\boldsymbol{\alpha}$。 6 | > 如果这两种运算满足以下八条运算( $\boldsymbol{\alpha}, \boldsymbol{\beta}\in V; \lambda,\mu\in R$): 7 | > 1. 加法交换律: $\boldsymbol{\alpha}+\boldsymbol{\beta} = \boldsymbol{\beta}+\boldsymbol{\alpha}$ 8 | > 2. 加法结合律: $(\boldsymbol{\alpha}+\boldsymbol{\beta})+\boldsymbol{\gamma}=\boldsymbol{\alpha}+(\boldsymbol{\beta}+\boldsymbol{\gamma})$ 9 | > 3. 在 $V$ 中存在零元素 $\boldsymbol{0}$, 对于任何 $\boldsymbol{\alpha} \in V$, 都有 $\boldsymbol{\alpha} +\boldsymbol{0}=\boldsymbol{\alpha}$ 10 | > 4. 对于任何 $\boldsymbol{\alpha}\in V$, 都有 $\boldsymbol{\alpha}$ 的负元素 $\boldsymbol{\beta}\in V$, 使得 $\boldsymbol{\alpha}+\boldsymbol{\beta}=\boldsymbol{0}$ 11 | > 5. $1\boldsymbol{\alpha}=\boldsymbol{\alpha}$ 12 | > 6. $\lambda(\mu\boldsymbol{\alpha}) = (\lambda\mu)\boldsymbol{\alpha}$ 13 | > 7. $(\lambda+\mu)\boldsymbol{\alpha}= \lambda\boldsymbol{\alpha} + \mu \boldsymbol{\alpha}$ 14 | > 8. $\lambda(\boldsymbol{\alpha}+\boldsymbol{\beta}) = \lambda\boldsymbol{\alpha}+\lambda\boldsymbol{\beta}$ 15 | > 那么, $V$ 就称为实数域 $R$ 上的线性空间 16 | 17 | 18 | 上述8条规律通常为线性运算。 19 | 20 | 21 | ## 1.2 线性空间的性质 22 | > @Property 23 | > **性质1.1** 24 | > 25 | > 1. 零元素是唯一的 26 | > 2. 任一元素的负元素是唯一的(将 $\boldsymbol{\alpha}$ 的负元素记为 $-\boldsymbol{\alpha}$) 27 | > 3. $0\boldsymbol{\alpha} = \boldsymbol{0}; (-1)\boldsymbol{\alpha} = -\boldsymbol{\alpha}; \lambda\boldsymbol{0}=\boldsymbol{0}$ 28 | > 4. 如果 $\lambda\boldsymbol{\alpha}=\boldsymbol{0}$, 则 $\lambda=0或\boldsymbol{\alpha}=\boldsymbol{0}$ 29 | 30 | ## 1.3 线性空间的子空间 31 | > @Definition 32 | > **定义1.2** 设 $V$ 是实数域 $R$ 上的线性空间, $W$ 是 $V$ 的一个非空子集, 如果 $W$ 关于 $V$ 的加法和数乘运算也构成线性空间,则称 $W$ 是 $V$ 的一个子空间 33 | 34 | 35 | > @Theorem 36 | > **定理1.1** 实数域 $R$ 上的线性空间 $V$ 的非空子集 $W$ 称为 $V$ 的一个子空间的充分必要条件是 $W$ 关于 $V$ 的加法和数乘是封闭的 37 | 38 | # 2. 维数、基与坐标 39 | ## 2.1 线性空间的基、维数与坐标 40 | > @Definition 41 | > **定义2.1** 在线性空间 $V$ 中,如果存在 $n$ 个元素 $\boldsymbol{\alpha_1},\boldsymbol{\alpha_2}, \cdots, \boldsymbol{\alpha_n}$, 满足 42 | > 1. $\boldsymbol{\alpha_1},\boldsymbol{\alpha_2}, \cdots, \boldsymbol{\alpha_n}$ 线性无关 43 | > 2. $V$ 中的任一元素 $\boldsymbol{\alpha}$ 总可由 $\boldsymbol{\alpha_1},\boldsymbol{\alpha_2}, \cdots, \boldsymbol{\alpha_n}$ 表示 44 | > 那么, $\boldsymbol{\alpha_1},\boldsymbol{\alpha_2}, \cdots, \boldsymbol{\alpha_n}$a 就称为线性空间 $V$ 的一个基, $n$ 称为线性空间 $V$ 的维数,记为 $\dim V = n$ 45 | > 只含有一个零元素的线性空间称为零空间,零空间没有基, 规定它的维数为0 46 | 47 | 48 | > @Definition 49 | > **定义2.2** 设 $\boldsymbol{\alpha_1},\boldsymbol{\alpha_2}, \cdots, \boldsymbol{\alpha_n}$ 是线性空间 $V_n$ 的一个基, 对于任一元素 $\boldsymbol{\alpha}\in V_n$, 总有且仅有一组有序数组 $x_1,x_2,\cdots, x_n$, 使 50 | > $$ 51 | > \alpha = x_1\boldsymbol{\alpha_1}+x_2\boldsymbol{\alpha_2}+\cdots+x_n\boldsymbol{\alpha_n} 52 | > $$ 53 | > $x_1,x_2,\cdots,x_n$ 这组有序数就称为 $\boldsymbol{\alpha}$ 在基 $\boldsymbol{\alpha_1},\boldsymbol{\alpha_2}, \cdots, \boldsymbol{\alpha_n}$ 下的坐标,并记作 54 | > $$ 55 | > \boldsymbol{\alpha} = (x_1,x_2,\cdots, x_n)^T 56 | > $$ 57 | 58 | 59 | 60 | 61 | ## 2.2 基变换与坐标变换 62 | 设 $\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \cdots, \boldsymbol{\alpha}_n$ 与 $\boldsymbol{\beta}_1, \boldsymbol{\beta}_2, \cdots, \boldsymbol{\beta}_n$ 是线性空间 $V_n$ 中的两个基,且 63 | $$ 64 | \begin{cases} 65 | \boldsymbol{\beta}_1 = p_{11}\boldsymbol{\alpha}_1+p_{12}\boldsymbol{\alpha}_2+\cdots+p_{1n}\boldsymbol{\alpha}_n \\ 66 | \boldsymbol{\beta}_2 = p_{21}\boldsymbol{\alpha}_1+p_{22}\boldsymbol{\alpha}_2+\cdots+p_{2n}\boldsymbol{\alpha}_n \\ 67 | \cdots \cdots \\ 68 | \boldsymbol{\beta}_n = p_{n1}\boldsymbol{\alpha}_1+p_{n2}\boldsymbol{\alpha}_2+\cdots+p_{nn}\boldsymbol{\alpha}_n \\ 69 | \end{cases} 70 | $$ 71 | 写成矩阵形式为 72 | $$ 73 | (\boldsymbol{\beta}_1, \boldsymbol{\beta}_2, \cdots, \boldsymbol{\beta}_n) = (\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \cdots, \boldsymbol{\alpha}_n) \boldsymbol{P} 74 | $$ 75 | 上式称为从基 $\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \cdots, \boldsymbol{\alpha}_n$ 到基 $\boldsymbol{\beta}_1, \boldsymbol{\beta}_2, \cdots, \boldsymbol{\beta}_n$ 的基变换公式,矩阵 $\boldsymbol{P}$ 称为过渡矩阵。 76 | 77 | 基坐标变换公式为: 78 | $$ 79 | \begin{bmatrix}x_1\\x_2\\ \vdots \\ x_n \end{bmatrix} = \boldsymbol{P} = \begin{bmatrix} y_1 \\ y_2\\ \vdots \\y_n\end{bmatrix} 或 80 | \begin{bmatrix}y_1\\y_2\\ \vdots \\ y_n \end{bmatrix} = \boldsymbol{P}^{-1} = \begin{bmatrix} x_1 \\ x_2\\ \vdots \\x_n\end{bmatrix} 81 | $$ 82 | 83 | # 3. 线性变换 84 | ## 3.1 线性变换的定义 85 | > @Definition 86 | > **定义3.1** 设 $V_n, U_m$ 分别是 $n$ 维和 $m$ 维线性空间,如果映射 $T:V_n\to U_m$ 满足: 87 | > 1. 任给 $\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2\in V_n$, 有 88 | > $$ 89 | > T(\boldsymbol{\alpha}_1+\boldsymbol{\alpha}_2) = T(\boldsymbol{\alpha}_1)+T(\boldsymbol{\alpha}_2) 90 | > $$ 91 | > 2. 任给 $\boldsymbol{\alpha}\in V_n,\lambda \in R$, 有 92 | > $$ 93 | > T(\lambda\boldsymbol{\alpha}) = \lambda T(\boldsymbol{\alpha}) 94 | > $$ 95 | > 那么 $T$ 就称为从 $V_n$ 到 $U_m$ 的线性映射,或称为线性变换。 96 | 97 | 98 | ## 3.2 线性变换的性质 99 | > @Property 100 | > **性质** 101 | > 1. $T(\boldsymbol{0})=\boldsymbol{0}, T(-\boldsymbol{\alpha})=-T(\boldsymbol{\alpha})$ 102 | > 2. $若 \boldsymbol{\beta} = k_1\boldsymbol{\alpha}_1+k_2\boldsymbol{\alpha}_2+\cdots+k_m\boldsymbol{\alpha}_m$, 则 103 | > $$ 104 | > T(\boldsymbol{\beta}) = k_1T(\boldsymbol{\alpha}_1) + k_2T(\boldsymbol{\alpha}_2)+\cdots+k_mT(\boldsymbol{\alpha}_m) 105 | > $$ 106 | > 3. 若 $\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \cdots, \boldsymbol{\alpha}_n$ 线性相关, 则 $T(\boldsymbol{\alpha}_1), T(\boldsymbol{\alpha}_2), \cdots, T(\boldsymbol{\alpha}_n)$ 也线性相关 107 | > 4. 线性变换 $T$ 的像集 $T(V_n)$ 是一个线性空间,称为线性变换 $T$ 的像空间 108 | > 5. 使 $T(\boldsymbol{\alpha})=\boldsymbol{0}$ 的全体 109 | > $$ 110 | > S_T= \{\boldsymbol{\alpha}|\boldsymbol{\alpha}\in V_n, T(\boldsymbol{\alpha})=\boldsymbol{0}\} 111 | > $$ 112 | > 也是 $V_n$ 的一个线性子空间,称 $S_T$ 为线性变换 $T$ 的核 113 | 114 | ## 3.3 线性变换的矩阵表示方式 115 | 116 | > @Theorem 117 | > **定理3.1** 设线性变换 $T$ 在基$\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \cdots, \boldsymbol{\alpha}_n$ 下的矩阵是 $\boldsymbol{A}$, 向量 $\boldsymbol{\alpha}$ 与 $T(\boldsymbol{\alpha})$ 在基$\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \cdots, \boldsymbol{\alpha}_n$ 下的坐标分别 $\begin{bmatrix} x_1\\ x_2\\ \vdots \\ x_n\end{bmatrix}$ 和 $\begin{bmatrix} y_1\\ y_2 \\ \vdots \\ y_n\end{bmatrix}$ 则有 118 | > $$ 119 | > \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n\end{bmatrix} = \boldsymbol{A} \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} 120 | > $$ 121 | > 按坐标表示,有 122 | > $$ 123 | > T(\boldsymbol{\alpha}) = \boldsymbol{A} \boldsymbol{\alpha} 124 | > $$ 125 | 126 | > @Theorem 127 | > **定理3.2** 在线性空间 $V_n$ 中取定两个基 $\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \cdots, \boldsymbol{\alpha}_n$ 与 $\boldsymbol{\beta}_1, \boldsymbol{\beta}_2, \cdots, \boldsymbol{\beta}_n$, 由 基 $\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \cdots, \boldsymbol{\alpha}_n$ 到基 $\boldsymbol{\beta}_1, \boldsymbol{\beta}_2, \cdots, \boldsymbol{\beta}_n$ 的过渡矩阵为 $\boldsymbol{P}$, $V_n$ 中的线性变换 $T$ 在这两个基下的矩阵依次为 $\boldsymbol{A}$ 和 $\boldsymbol{B}$ , 那么 $\boldsymbol{B}=\boldsymbol{P}^{-1}\boldsymbol{A}\boldsymbol{P}$ 128 | 129 | 130 | > @Definition 131 | > **定义3.2** 线性变换的像空间 $T(V_n)$ 的维数,称为线性变换 $T$ 的秩。 132 | 133 | -------------------------------------------------------------------------------- /01 - 408/00 - Computer composition pricile/image/ch04_00_00.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
磁带
磁带
磁盘
磁盘
主存
主存
缓存
缓存
寄存器
寄存器
Text is not SVG - cannot display
--------------------------------------------------------------------------------