From 7ba41a35c65995ba5de6844d3bc22721ca7fd6a8 Mon Sep 17 00:00:00 2001
From: Didnelpsun <2675350965@qq.com>
Date: Fri, 13 Aug 2021 11:02:33 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 12 +-
Code/C-Code/C-Code.sln | 31 ++
Code/C-Code/C-Code.vcxproj | 153 +++++++++
Code/C-Code/C-Code.vcxproj.filters | 36 ++
.../C-Code.vcxproj.user} | 0
{CPP-Code => Code/C-Code}/head/head.h | 0
Code/C-Code/head/link_list.h | 114 +++++++
Code/C-Code/head/sequence_list.h | 322 ++++++++++++++++++
Code/C-Code/source/main.c | 10 +
Code/C-Code/source/test.c | 45 +++
{CPP-Code => Code/CPP-Code}/CMakeLists.txt | 0
.../CPP-Code}/CMakeSettings.json | 0
Code/{ => CPP-Code/head}/head.h | 0
{CPP-Code => Code/CPP-Code}/head/link_list.h | 0
.../CPP-Code}/head/sequence_list.h | 0
{CPP-Code => Code/CPP-Code}/source/main.cpp | 0
{CPP-Code => Code/CPP-Code}/source/test.cpp | 0
Code/{ => Code}/Code.sln | 0
Code/{ => Code}/Code.vcxproj | 0
Code/{ => Code}/Code.vcxproj.filters | 0
Code/Code/Code.vcxproj.user | 4 +
Code/{ => Code}/double_link_list.h | 0
Code/{ => Code}/graph.h | 0
Code/Code/head.h | 8 +
Code/{ => Code}/link_list.h | 0
Code/{ => Code}/link_queue.h | 0
Code/{ => Code}/link_stack.h | 0
Code/{ => Code}/link_string.h | 0
Code/{ => Code}/link_tree.h | 0
Code/{ => Code}/main.c | 0
Code/{ => Code}/search.h | 0
Code/{ => Code}/sequence_list.h | 0
Code/{ => Code}/sequence_queue.h | 0
Code/{ => Code}/sequence_stack.h | 0
Code/{ => Code}/sequence_string.h | 0
Code/{ => Code}/sequence_tree.h | 0
Code/{ => Code}/sort.h | 0
Code/{ => Code}/static_link_list.h | 0
Code/{ => Code}/test.c | 0
Code/{ => Code}/thread_tree.h | 0
Operate-System/0-summary-ex.md | 20 ++
41 files changed, 749 insertions(+), 6 deletions(-)
create mode 100644 Code/C-Code/C-Code.sln
create mode 100644 Code/C-Code/C-Code.vcxproj
create mode 100644 Code/C-Code/C-Code.vcxproj.filters
rename Code/{Code.vcxproj.user => C-Code/C-Code.vcxproj.user} (100%)
rename {CPP-Code => Code/C-Code}/head/head.h (100%)
create mode 100644 Code/C-Code/head/link_list.h
create mode 100644 Code/C-Code/head/sequence_list.h
create mode 100644 Code/C-Code/source/main.c
create mode 100644 Code/C-Code/source/test.c
rename {CPP-Code => Code/CPP-Code}/CMakeLists.txt (100%)
rename {CPP-Code => Code/CPP-Code}/CMakeSettings.json (100%)
rename Code/{ => CPP-Code/head}/head.h (100%)
rename {CPP-Code => Code/CPP-Code}/head/link_list.h (100%)
rename {CPP-Code => Code/CPP-Code}/head/sequence_list.h (100%)
rename {CPP-Code => Code/CPP-Code}/source/main.cpp (100%)
rename {CPP-Code => Code/CPP-Code}/source/test.cpp (100%)
rename Code/{ => Code}/Code.sln (100%)
rename Code/{ => Code}/Code.vcxproj (100%)
rename Code/{ => Code}/Code.vcxproj.filters (100%)
create mode 100644 Code/Code/Code.vcxproj.user
rename Code/{ => Code}/double_link_list.h (100%)
rename Code/{ => Code}/graph.h (100%)
create mode 100644 Code/Code/head.h
rename Code/{ => Code}/link_list.h (100%)
rename Code/{ => Code}/link_queue.h (100%)
rename Code/{ => Code}/link_stack.h (100%)
rename Code/{ => Code}/link_string.h (100%)
rename Code/{ => Code}/link_tree.h (100%)
rename Code/{ => Code}/main.c (100%)
rename Code/{ => Code}/search.h (100%)
rename Code/{ => Code}/sequence_list.h (100%)
rename Code/{ => Code}/sequence_queue.h (100%)
rename Code/{ => Code}/sequence_stack.h (100%)
rename Code/{ => Code}/sequence_string.h (100%)
rename Code/{ => Code}/sequence_tree.h (100%)
rename Code/{ => Code}/sort.h (100%)
rename Code/{ => Code}/static_link_list.h (100%)
rename Code/{ => Code}/test.c (100%)
rename Code/{ => Code}/thread_tree.h (100%)
diff --git a/.gitignore b/.gitignore
index 8596ef1..fd077bc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
*.pdf
-*/.vs/
-*/.idea/
-*/Debug/
-*/x64/
-*/out/
-*/cmake-build-debug/
\ No newline at end of file
+*.vs/
+*.idea/
+*Debug/
+*x64/
+*out/
+*cmake-build-debug/
\ No newline at end of file
diff --git a/Code/C-Code/C-Code.sln b/Code/C-Code/C-Code.sln
new file mode 100644
index 0000000..7383438
--- /dev/null
+++ b/Code/C-Code/C-Code.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31605.320
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "C-Code", "C-Code.vcxproj", "{0097210B-6B4C-4528-90F7-28DC333772CF}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0097210B-6B4C-4528-90F7-28DC333772CF}.Debug|x64.ActiveCfg = Debug|x64
+ {0097210B-6B4C-4528-90F7-28DC333772CF}.Debug|x64.Build.0 = Debug|x64
+ {0097210B-6B4C-4528-90F7-28DC333772CF}.Debug|x86.ActiveCfg = Debug|Win32
+ {0097210B-6B4C-4528-90F7-28DC333772CF}.Debug|x86.Build.0 = Debug|Win32
+ {0097210B-6B4C-4528-90F7-28DC333772CF}.Release|x64.ActiveCfg = Release|x64
+ {0097210B-6B4C-4528-90F7-28DC333772CF}.Release|x64.Build.0 = Release|x64
+ {0097210B-6B4C-4528-90F7-28DC333772CF}.Release|x86.ActiveCfg = Release|Win32
+ {0097210B-6B4C-4528-90F7-28DC333772CF}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {D42A6D35-5080-4B03-A977-17AEC5B1ED3D}
+ EndGlobalSection
+EndGlobal
diff --git a/Code/C-Code/C-Code.vcxproj b/Code/C-Code/C-Code.vcxproj
new file mode 100644
index 0000000..45af98f
--- /dev/null
+++ b/Code/C-Code/C-Code.vcxproj
@@ -0,0 +1,153 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ Win32Proj
+ {0097210b-6b4c-4528-90f7-28dc333772cf}
+ CCode
+ 10.0
+
+
+
+ Application
+ true
+ v142
+ Unicode
+
+
+ Application
+ false
+ v142
+ true
+ Unicode
+
+
+ Application
+ true
+ v142
+ Unicode
+
+
+ Application
+ false
+ v142
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ false
+
+
+ true
+
+
+ false
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Code/C-Code/C-Code.vcxproj.filters b/Code/C-Code/C-Code.vcxproj.filters
new file mode 100644
index 0000000..7cac836
--- /dev/null
+++ b/Code/C-Code/C-Code.vcxproj.filters
@@ -0,0 +1,36 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ 源文件
+
+
+ 源文件
+
+
+
+
+ 头文件
+
+
+ 头文件
+
+
+ 头文件
+
+
+
\ No newline at end of file
diff --git a/Code/Code.vcxproj.user b/Code/C-Code/C-Code.vcxproj.user
similarity index 100%
rename from Code/Code.vcxproj.user
rename to Code/C-Code/C-Code.vcxproj.user
diff --git a/CPP-Code/head/head.h b/Code/C-Code/head/head.h
similarity index 100%
rename from CPP-Code/head/head.h
rename to Code/C-Code/head/head.h
diff --git a/Code/C-Code/head/link_list.h b/Code/C-Code/head/link_list.h
new file mode 100644
index 0000000..b5efa6f
--- /dev/null
+++ b/Code/C-Code/head/link_list.h
@@ -0,0 +1,114 @@
+#include
+#include
+#include "head.h"
+
+//
+typedef struct LinkListNode {
+ element_type data;
+ struct LinkListNode* next;
+} LinkListNode, *LinkList;
+
+// CֵԱһм
+// ʼͷڵ㵥
+int InitLinkListWithHead(LinkList list) {
+ if (list) {
+ list->data = NULL;
+ list->next = NULL;
+ return 0;
+ }
+ else {
+ printf("InitLinkListWithHead:ָΪʼ");
+ return 1;
+ }
+}
+
+// CʵֳʼΪʵôݣֵܸ
+// ʼͷڵ㵥
+int InitLinkListWithoutHead(LinkList list) {
+ list = NULL;
+ return 0;
+}
+
+// ͷڵ㵥
+LinkList CreateLinkListWithHead() {
+ LinkList list = (LinkListNode*)malloc(sizeof(LinkListNode));
+ if (list) {
+ list->data = NULL;
+ list->next = NULL;
+ }
+ else {
+ printf("CreateLinkListWithHead:ռʧܣ");
+ }
+ return list;
+}
+
+// ͷڵ㵥
+LinkList CreateLinkListWithoutHead() {
+ return NULL;
+}
+
+
+// жͷڵ㵥ǷΪ
+int EmptyLinkListWithHead(LinkList list) {
+ if (list->next) {
+ return 0;
+ }
+ else {
+ return 1;
+ }
+}
+
+// жͷڵ㵥ǷΪ
+int EmptyLLinkListWithoutHead(LinkList list) {
+ if (list) {
+ return 0;
+ }
+ else {
+ return 1;
+ }
+}
+
+// ͷڵ㵥Ԫ
+// 0Žڵͷڵ
+int InsertLinkListWithHead(LinkList list, int index, element_type elem) {
+ if (index < 1) {
+ printf("InsertLinkListWithHead:ֵС\n");
+ return 1;
+ }
+ // һָpָǰɨ赽Ľ
+ LinkListNode* p;
+ // һiʾǰɨ赽Ľ
+ int i = 0;
+ // ͷָpΪ0
+ p = list;
+ // ѭָŵĵĽ
+ // ǵǰһΪŵĽһǿս
+ while (p->next != NULL && i < index - 1) {
+ p = p->next;
+ i++;
+ }
+ // ʱiСindex-1ʾ껹ûеӦ
+ if (i < index - 1) {
+ printf("InsertLinkListWithHead:ֵ\n");
+ return 1;
+ }
+ // ʱi==index-1
+ LinkListNode* s = (LinkListNode*)malloc(sizeof(LinkListNode));
+ if (s) {
+ s->data = elem;
+ // pԭĺ̸µĽ
+ s->next = p->next;
+ p->next = s;
+ return 0;
+ }
+ else {
+ printf("InsertLinkListWithHead:ڴʧܣ\n");
+ return 1;
+ }
+}
+
+// ͷڵ㵥Ԫ
+// CҲ
+int InsertLinkListWithoutHead(LinkList list, int index, element_type elem) {
+ return 1;
+}
\ No newline at end of file
diff --git a/Code/C-Code/head/sequence_list.h b/Code/C-Code/head/sequence_list.h
new file mode 100644
index 0000000..d2ad597
--- /dev/null
+++ b/Code/C-Code/head/sequence_list.h
@@ -0,0 +1,322 @@
+#include
+#include
+#include "head.h"
+
+#pragma warning(disable:6385)
+#pragma warning(disable:6386)
+
+// 静态顺序表
+typedef struct {
+ element_type data[MAXSIZE];
+ // 长度
+ int length;
+} StaticSequenceList;
+
+// 动态顺序表
+typedef struct {
+ // 给一个指针来分配动态数组
+ element_type *data;
+ // 已分配的最大容量
+ int max_size;
+ // 长度
+ int length;
+} DynamicSequenceList;
+
+// 初始化静态顺序表
+int InitStaticSequenceList(StaticSequenceList* list) {
+ if (list) {
+ // 初初始化静态顺序表长度为0
+ list->length = 0;
+ return 0;
+ }
+ else {
+ printf("InitStaticSequenceList:指针指向为NULL!\n");
+ return 1;
+ }
+}
+
+// 初始化动态顺序表
+int InitDynamicSequenceList(DynamicSequenceList* list) {
+ if (list) {
+ // 初初始化动态顺序表长度为0
+ list->length = 0;
+ list->max_size = 0;
+ // 申请一片连续的存储空间
+ element_type* space = (element_type*)malloc(MAXSIZE * sizeof(element_type));
+ if (space) {
+ list->data = space;
+ list->max_size = MAXSIZE;
+ return 0;
+ }
+ else {
+ printf("InitDynamicSequenceList:分配空间失败!\n");
+ return 1;
+ }
+ }
+ else {
+ printf("InitDynamicSequenceList:指针指向为NULL!\n");
+ return 1;
+ }
+}
+
+// 打印静态顺序表
+int PrintfStaticSequenceList(StaticSequenceList list) {
+ for (int i = 0; i < list.length; i++) {
+ printf("第%d个元素值为%c\n", i + 1, list.data[i]);
+ }
+ return 0;
+}
+
+// 打印动态顺序表
+int PrintfDynamicSequenceList(DynamicSequenceList list) {
+ for (int i = 0; i < list.length; i++) {
+ printf("第%d个元素值为%c\n", i + 1, list.data[i]);
+ }
+ return 0;
+}
+
+// 分配其他地址增长动态顺序表的数据空间长度
+int OtherIncreaseDynamicSequenceList(DynamicSequenceList* list, int len) {
+ if (len <= 0) {
+ printf("OtherIncreaseDynamicSequenceList:申请空间应该大于0!\n");
+ return 1;
+ }
+ // 申请一片连续的存储空间
+ int new_length = list->max_size + len;
+ element_type* space = (element_type*)malloc(new_length * sizeof(element_type));
+ if (space) {
+ // 建立中间变量
+ list->data = space;
+ element_type* temp = list->data;
+ for (int i = 0; i < list->length; i++) {
+ list->data[i] = temp[i];
+ }
+ list->max_size = new_length;
+ free(temp);
+ return 0;
+ }
+ else {
+ printf("OtherIncreaseDynamicSequenceList:重新分配空间失败!\n");
+ return 1;
+ }
+}
+
+// 重新分配地址增长动态顺序表的数据空间长度
+int ReIncreaseDynamicSequenceList(DynamicSequenceList* list, int len) {
+ if (len <= 0) {
+ printf("ReIncreaseDynamicSequenceList:申请空间应该大于0!\n");
+ return 1;
+ }
+ // 申请一片连续的存储空间
+ int new_length = list->max_size + len;
+ element_type* space = (element_type*)realloc(list->data, new_length * sizeof(element_type));
+ if (space) {
+ list->data = space;
+ list->max_size += len;
+ return 0;
+ }
+ else {
+ list->max_size = 0;
+ list->length = 0;
+ printf("ReIncreaseDynamicSequenceList:分配其他地址空间失败!\n");
+ return 1;
+ }
+}
+
+// 插入静态顺序表
+int InsertStaticSequenceList(StaticSequenceList* list, int index, element_type elem) {
+ // 当静态顺序表已经满了就不能插入任何元素
+ if (list->length >= MAXSIZE) {
+ printf("InsertStaticSequenceList:静态顺序表空间不足,插入失败!\n");
+ return 1;
+ }
+ // 索引位置从0开始,所以可以插入的范围是0到list->length
+ if (index > list->length || index < 0) {
+ printf("InsertStaticSequenceList:插入索引%d超过索引范围!\n", index);
+ return 1;
+ }
+ // 从最后一个元素开始交换后移,list->length是空的
+ for (int i = list->length; i > index; i--) {
+ list->data[i] = list->data[i - 1];
+ }
+ list->data[index] = elem;
+ list->length++;
+ return 0;
+}
+
+// 插入动态顺序表
+int InsertDynamicSequenceList(DynamicSequenceList* list, int index, element_type elem) {
+ if (index > list->length || index < 0) {
+ printf("InsertDynamicSequenceList:插入索引%d超过索引范围!\n", index);
+ return 1;
+ }
+ // 当动态顺序表已经满了,需要新增一个位置
+ // 为了避免索引无效而多增加一个空间,所以放在检查索引值的后面
+ if (list->length >= MAXSIZE) {
+ int result = ReIncreaseDynamicSequenceList(list, 1);
+ if (result == 1) {
+ printf("InsertDynamicSequenceList:申请空间失败!\n");
+ return 1;
+ }
+ }
+ for (int i = list->length; i > index; i--) {
+ list->data[i] = list->data[i - 1];
+ }
+ list->data[index] = elem;
+ list->length++;
+ return 0;
+}
+
+// 循环插入静态顺序表
+int LoopInsertStaticSequenceList(StaticSequenceList* list, element_type* elem, int start, int end) {
+ for (int i = 0; i < end; i++) {
+ int result = InsertStaticSequenceList(list, i, elem[i + start]);
+ if (result == 1) {
+ printf("LoopInsertStaticSequenceList:循环插入失败!\n");
+ return 1;
+ }
+ }
+ return 0;
+}
+
+// 循环插入动态顺序表
+int LoopInsertDynamicSequenceList(DynamicSequenceList* list, element_type* elem, int start, int end) {
+ for (int i = 0; i < end; i++) {
+ int result = InsertDynamicSequenceList(list, i, elem[i + start]);
+ if (result == 1) {
+ printf("LoopInsertDynamicSequenceList:循环插入失败!\n");
+ return 1;
+ }
+ }
+ return 0;
+}
+
+// 删除静态顺序表
+int DeleteStaticSequenceList(StaticSequenceList* list, int index, element_type *elem) {
+ if (index >= list->length || index < 0) {
+ printf("DeleteStaticSequenceList:删除索引超过索引范围!\n");
+ return 1;
+ }
+ *elem = list->data[index];
+ for (int i = index; i < list->length; i++) {
+ list->data[i] = list->data[i + 1];
+ }
+ list->length--;
+ return 0;
+}
+
+// 删除动态顺序表
+int DeleteDynamicSequenceList(DynamicSequenceList* list, int index, element_type *elem) {
+ if (index >= list->length || index < 0) {
+ printf("DeleteDynamicSequenceList:删除索引超过索引范围!\n");
+ return 1;
+ }
+ *elem = list->data[index];
+ for (int i = index; i < list->length; i++) {
+ list->data[i] = list->data[i + 1];
+ }
+ list->length--;
+ return 0;
+}
+
+// 删除多个静态顺序表
+int MultiDeleteStaticSequenceList(StaticSequenceList* list, int index, int len, element_type* elem) {
+ if (index + len >= list->length || index < 0) {
+ printf("MultiDeleteStaticSequenceList:删除索引超过索引范围!\n");
+ return 1;
+ }
+ for (int i = index; i < list->length - len; i++) {
+ if (i < index + len) {
+ elem[i - index] = list->data[i];
+ }
+ list->data[i] = list->data[i + len];
+ }
+ list->length -= len;
+ return 0;
+}
+
+// 删除多个动态顺序表
+int MultiDeleteDynamicSequenceList(DynamicSequenceList* list, int index, int len, element_type* elem) {
+ if (index + len >= list->length || index < 0) {
+ printf("MultiDeleteDynamicSequenceList:删除索引超过索引范围!\n");
+ return 1;
+ }
+ for (int i = index; i < list->length - len; i++) {
+ if (i < index + len) {
+ elem[i - index] = list->data[i];
+ }
+ list->data[i] = list->data[i + len];
+ }
+ list->length -= len;
+ return 0;
+}
+
+// 按位查找静态顺序表元素
+element_type GetStaticSequenceListElement(StaticSequenceList list, int index) {
+ if (index >= list.length || index < 0) {
+ printf("GetStaticSequenceListElement:查找索引超过索引范围!\n");
+ return DEFAULTELEM;
+ }
+ return list.data[index];
+}
+
+// 按位查找动态顺序表元素
+element_type GetDynamicSequenceListElement(DynamicSequenceList list, int index) {
+ if (index >= list.length || index < 0) {
+ printf("GetDynamicSequenceListElement:查找索引超过索引范围!\n");
+ return DEFAULTELEM;
+ }
+ return list.data[index];
+}
+
+// 按值查找静态顺序表索引
+int LocateStaticSequenceListElement(StaticSequenceList list, element_type elem) {
+ for (int i = 0; i < list.length; i++) {
+ if (list.data[i] == elem) {
+ return i;
+ }
+ }
+ printf("LocateStaticSequenceListElement:未能定位到对应值的元素!\n");
+ return -1;
+}
+
+// 按值查找动态顺序表索引
+int LocateDynamicSequenceListElement(DynamicSequenceList list, element_type elem) {
+ for (int i = 0; i < list.length; i++) {
+ if (list.data[i] == elem) {
+ return i;
+ }
+ }
+ printf("LocateDynamicSequenceListElement:未能定位到对应值的元素!\n");
+ return -1;
+}
+
+// 判空静态顺序表
+int EmptyStaticSequenceList(StaticSequenceList list) {
+ if (list.length == 0) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+// 判空动态顺序表
+int EmptyDynamicSequenceList(DynamicSequenceList list) {
+ if (list.length == 0) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+// 销毁动态顺序表
+int DestroyDynamicSequenceList(DynamicSequenceList* list) {
+ if (list != NULL) {
+ free(list->data);
+ }
+ list = NULL;
+ return 0;
+}
+
diff --git a/Code/C-Code/source/main.c b/Code/C-Code/source/main.c
new file mode 100644
index 0000000..c784272
--- /dev/null
+++ b/Code/C-Code/source/main.c
@@ -0,0 +1,10 @@
+#include
+#include
+
+
+int main()
+{
+ //SequenceListTest();
+ LinkListTest();
+ return 0;
+}
\ No newline at end of file
diff --git a/Code/C-Code/source/test.c b/Code/C-Code/source/test.c
new file mode 100644
index 0000000..d58f551
--- /dev/null
+++ b/Code/C-Code/source/test.c
@@ -0,0 +1,45 @@
+// ļ
+
+#include "../Head/sequence_list.h"
+#include "../Head/link_list.h"
+
+int SequenceListTest() {
+ DynamicSequenceList list;
+ InitDynamicSequenceList(&list);
+ element_type a[6] = {'1','2','3','4','5','6'};
+ LoopInsertDynamicSequenceList(&list, a, 0, 6);
+ element_type b[3] = { 9, 'a', 'e' };
+ LoopInsertDynamicSequenceList(&list, b, 1, 2);
+ //printf("%d", list.length);
+ PrintfDynamicSequenceList(list);
+ printf("\n");
+ int len = 2;
+ element_type elem[2];
+ MultiDeleteDynamicSequenceList(&list, 0, len, elem);
+ PrintfDynamicSequenceList(list);
+ for (int i = 0; i < len; i++) {
+ printf("%c\n", elem[i]);
+ }
+ /*DynamicSequenceList dlist;
+ InitDynamicSequenceList(&dlist);
+ OtherIncreaseDynamicSequenceList(&dlist, 15);
+ printf("%d", dlist.max_size);*/
+ /*int index = LocateDynamicSequenceListElement(list, '5');
+ printf("%d", index);
+ DestroyDynamicSequenceList(&list);*/
+ return 0;
+}
+
+int LinkListTest() {
+ /*LinkListNode node;
+ InitLinkListWithHead(&node);
+ LinkList list = &node;*/
+ LinkList list = CreateLinkListWithHead();
+ /*int empty = EmptyLinkListWithHead(list);*/
+ /*LinkList list = CreateLinkListWithoutHead();
+ int empty = EmptyLLinkListWithoutHead(list);
+ printf("%d", empty);*/
+ InsertLinkListWithHead(list, 1, '0');
+ return 0;
+}
+
diff --git a/CPP-Code/CMakeLists.txt b/Code/CPP-Code/CMakeLists.txt
similarity index 100%
rename from CPP-Code/CMakeLists.txt
rename to Code/CPP-Code/CMakeLists.txt
diff --git a/CPP-Code/CMakeSettings.json b/Code/CPP-Code/CMakeSettings.json
similarity index 100%
rename from CPP-Code/CMakeSettings.json
rename to Code/CPP-Code/CMakeSettings.json
diff --git a/Code/head.h b/Code/CPP-Code/head/head.h
similarity index 100%
rename from Code/head.h
rename to Code/CPP-Code/head/head.h
diff --git a/CPP-Code/head/link_list.h b/Code/CPP-Code/head/link_list.h
similarity index 100%
rename from CPP-Code/head/link_list.h
rename to Code/CPP-Code/head/link_list.h
diff --git a/CPP-Code/head/sequence_list.h b/Code/CPP-Code/head/sequence_list.h
similarity index 100%
rename from CPP-Code/head/sequence_list.h
rename to Code/CPP-Code/head/sequence_list.h
diff --git a/CPP-Code/source/main.cpp b/Code/CPP-Code/source/main.cpp
similarity index 100%
rename from CPP-Code/source/main.cpp
rename to Code/CPP-Code/source/main.cpp
diff --git a/CPP-Code/source/test.cpp b/Code/CPP-Code/source/test.cpp
similarity index 100%
rename from CPP-Code/source/test.cpp
rename to Code/CPP-Code/source/test.cpp
diff --git a/Code/Code.sln b/Code/Code/Code.sln
similarity index 100%
rename from Code/Code.sln
rename to Code/Code/Code.sln
diff --git a/Code/Code.vcxproj b/Code/Code/Code.vcxproj
similarity index 100%
rename from Code/Code.vcxproj
rename to Code/Code/Code.vcxproj
diff --git a/Code/Code.vcxproj.filters b/Code/Code/Code.vcxproj.filters
similarity index 100%
rename from Code/Code.vcxproj.filters
rename to Code/Code/Code.vcxproj.filters
diff --git a/Code/Code/Code.vcxproj.user b/Code/Code/Code.vcxproj.user
new file mode 100644
index 0000000..88a5509
--- /dev/null
+++ b/Code/Code/Code.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Code/double_link_list.h b/Code/Code/double_link_list.h
similarity index 100%
rename from Code/double_link_list.h
rename to Code/Code/double_link_list.h
diff --git a/Code/graph.h b/Code/Code/graph.h
similarity index 100%
rename from Code/graph.h
rename to Code/Code/graph.h
diff --git a/Code/Code/head.h b/Code/Code/head.h
new file mode 100644
index 0000000..3ea11c5
--- /dev/null
+++ b/Code/Code/head.h
@@ -0,0 +1,8 @@
+// ʼ
+#define MAXSIZE 5
+// Ĭֵ
+#define DEFAULTELEM '0'
+// ֵ
+#define INFINITY 32767
+// Ĭ
+typedef char element_type;
diff --git a/Code/link_list.h b/Code/Code/link_list.h
similarity index 100%
rename from Code/link_list.h
rename to Code/Code/link_list.h
diff --git a/Code/link_queue.h b/Code/Code/link_queue.h
similarity index 100%
rename from Code/link_queue.h
rename to Code/Code/link_queue.h
diff --git a/Code/link_stack.h b/Code/Code/link_stack.h
similarity index 100%
rename from Code/link_stack.h
rename to Code/Code/link_stack.h
diff --git a/Code/link_string.h b/Code/Code/link_string.h
similarity index 100%
rename from Code/link_string.h
rename to Code/Code/link_string.h
diff --git a/Code/link_tree.h b/Code/Code/link_tree.h
similarity index 100%
rename from Code/link_tree.h
rename to Code/Code/link_tree.h
diff --git a/Code/main.c b/Code/Code/main.c
similarity index 100%
rename from Code/main.c
rename to Code/Code/main.c
diff --git a/Code/search.h b/Code/Code/search.h
similarity index 100%
rename from Code/search.h
rename to Code/Code/search.h
diff --git a/Code/sequence_list.h b/Code/Code/sequence_list.h
similarity index 100%
rename from Code/sequence_list.h
rename to Code/Code/sequence_list.h
diff --git a/Code/sequence_queue.h b/Code/Code/sequence_queue.h
similarity index 100%
rename from Code/sequence_queue.h
rename to Code/Code/sequence_queue.h
diff --git a/Code/sequence_stack.h b/Code/Code/sequence_stack.h
similarity index 100%
rename from Code/sequence_stack.h
rename to Code/Code/sequence_stack.h
diff --git a/Code/sequence_string.h b/Code/Code/sequence_string.h
similarity index 100%
rename from Code/sequence_string.h
rename to Code/Code/sequence_string.h
diff --git a/Code/sequence_tree.h b/Code/Code/sequence_tree.h
similarity index 100%
rename from Code/sequence_tree.h
rename to Code/Code/sequence_tree.h
diff --git a/Code/sort.h b/Code/Code/sort.h
similarity index 100%
rename from Code/sort.h
rename to Code/Code/sort.h
diff --git a/Code/static_link_list.h b/Code/Code/static_link_list.h
similarity index 100%
rename from Code/static_link_list.h
rename to Code/Code/static_link_list.h
diff --git a/Code/test.c b/Code/Code/test.c
similarity index 100%
rename from Code/test.c
rename to Code/Code/test.c
diff --git a/Code/thread_tree.h b/Code/Code/thread_tree.h
similarity index 100%
rename from Code/thread_tree.h
rename to Code/Code/thread_tree.h
diff --git a/Operate-System/0-summary-ex.md b/Operate-System/0-summary-ex.md
index d7e52aa..18eac54 100644
--- a/Operate-System/0-summary-ex.md
+++ b/Operate-System/0-summary-ex.md
@@ -270,4 +270,24 @@ $D.$仅Ⅱ、Ⅲ、Ⅳ
解:$C$。用户可以在用户态调用操作系统的服务,但执行具体的系统调用服务程序是处于内核态的,Ⅰ正确;设备管理属于操作系统的职能之一,包括对输入/输出设备的分配、初始化、维护等,用户程序需要通过系统调用使用操作系统的设备管理服务,Ⅱ正确;操作系统不同,底层逻辑、实现方式均不相同,为应用程序提供的系统调用接口也不同,Ⅲ错误;系统调用是用户在程序中调用操作系统提供的子功能,Ⅳ正确。
+**例题** 相对于传统操作系统结构,采用微内核结构设计和实现操作系统具有诸多好处,下列()是微内核结构的特点。
+
+Ⅰ.使系统更高效
+
+Ⅱ.添加系统服务时,不必修改内核
+
+Ⅲ.微内核结构没有单一内核稳定
+
+Ⅳ.使系统更可靠
+
+$A.$Ⅰ、Ⅲ、Ⅳ
+
+$B.$Ⅰ、Ⅱ、Ⅳ
+
+$C.$Ⅱ、Ⅳ
+
+$D.$Ⅰ、Ⅳ
+
+解:$C$。微内核结构将操作系统的很多服务移动到内核以外(如文件系统),且服务之间使用进程间通信机制进行信息交换,这种通过进程间通信机制进行的信息交换影响了系统的效率,所以Ⅰ错。由于内核的服务变少,且一般来说内核的服务越少内核越稳定,所以Ⅲ错。而Ⅱ、Ⅳ正是微内核结构的优点。
+
[gantt]:data:image/png;base64,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
\ No newline at end of file