From bda198a3f564460f297e57a269405ea1a9182ea4 Mon Sep 17 00:00:00 2001
From: Didnelpsun <2675350965@qq.com>
Date: Tue, 10 Aug 2021 23:13:38 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=93=BE=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 1 +
Code/Code.vcxproj | 1 +
Code/head.h | 2 +-
Code/link_list.h | 8 +++++---
Code/main.c | 3 ++-
Code/sequence_list.h | 33 ++++++++++++++-------------------
Code/test.c | 21 +++++++++++++++++----
Data-Structrue/1-linear-list.md | 17 +++++++++++++++--
Operate-System/0-summary-ex.md | 2 ++
9 files changed, 58 insertions(+), 30 deletions(-)
create mode 100644 Operate-System/0-summary-ex.md
diff --git a/.gitignore b/.gitignore
index 3e9d3ed..0e37430 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
*.pdf
/Code/.vs/
+/Code/Debug/
/Code/x64/
\ No newline at end of file
diff --git a/Code/Code.vcxproj b/Code/Code.vcxproj
index 3ad470e..fd5c15e 100644
--- a/Code/Code.vcxproj
+++ b/Code/Code.vcxproj
@@ -116,6 +116,7 @@
true
_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
+ UninitializedLocalUsageCheck
Console
diff --git a/Code/head.h b/Code/head.h
index 8e8d2b9..3ea11c5 100644
--- a/Code/head.h
+++ b/Code/head.h
@@ -1,7 +1,7 @@
// 初始化最大长度
#define MAXSIZE 5
// 定义默认值
-#define DEFAULTELEM 0
+#define DEFAULTELEM '0'
// 定义最大值
#define INFINITY 32767
// 定义默认数据类型
diff --git a/Code/link_list.h b/Code/link_list.h
index dba9a53..8987157 100644
--- a/Code/link_list.h
+++ b/Code/link_list.h
@@ -15,6 +15,7 @@ int InitLinkListWithHead(LinkList list) {
printf("InitLinkListWithHead:鍒濆鍖栧垎閰嶅唴瀛樺け璐ワ紒");
return 1;
}
+ list->data = NULL;
list->next = NULL;
return 0;
}
@@ -26,7 +27,7 @@ int InitLinkListWithoutHead(LinkList list) {
}
// 鍒ゆ柇鏈夊ご鑺傜偣鍗曢摼琛ㄦ槸鍚︿负绌
-int IsLinkListEmptyWithHead(LinkList list) {
+int EmptyLinkListWithHead(LinkList list) {
if (list->next == NULL) {
return 1;
}
@@ -36,7 +37,7 @@ int IsLinkListEmptyWithHead(LinkList list) {
}
// 鍒ゆ柇鏃犲ご鑺傜偣鍗曢摼琛ㄦ槸鍚︿负绌
-int IsLLinkListEmptyWithoutHead(LinkList list) {
+int EmptyIsLLinkListWithoutHead(LinkList list) {
if (list == NULL) {
return 1;
}
@@ -46,6 +47,7 @@ int IsLLinkListEmptyWithoutHead(LinkList list) {
}
// 鎻掑叆鏈夊ご鑺傜偣鍗曢摼琛ㄥ厓绱
+// 0鍙疯妭鐐规槸澶磋妭鐐
int InsertLinkListWithHead(LinkList list, int index, element_type elem) {
if (index < 1) {
printf("InsertLinkListWithHead:鎻掑叆绱㈠紩鍊艰繃灏忥紒\n");
@@ -194,7 +196,7 @@ int DeleteLinkListWithHead(LinkList list, int index, element_type *elem) {
}
// 鍒犻櫎鏃犲ご鑺傜偣鍗曢摼琛ㄥ厓绱
-int DeleteLinkListWithHead(LinkList list, int index, element_type* elem) {
+int DeleteLinkListWithoutHead(LinkList list, int index, element_type* elem) {
if (index < 0) {
printf("DeleteLinkListWithHead:鍒犻櫎绱㈠紩鍊艰繃灏忥紒\n");
return 1;
diff --git a/Code/main.c b/Code/main.c
index 8a3cffa..c524add 100644
--- a/Code/main.c
+++ b/Code/main.c
@@ -4,6 +4,7 @@
int main()
{
- SequenceListTest();
+ //SequenceListTest();
+ //LinkListTest();
return 0;
}
\ No newline at end of file
diff --git a/Code/sequence_list.h b/Code/sequence_list.h
index 017b35d..796d733 100644
--- a/Code/sequence_list.h
+++ b/Code/sequence_list.h
@@ -225,16 +225,11 @@ int MultiDeleteStaticSequenceList(StaticSequenceList* list, int index, int len,
printf("MultiDeleteStaticSequenceList:鍒犻櫎绱㈠紩瓒呰繃绱㈠紩鑼冨洿锛乗n");
return 1;
}
- elem = (element_type*)malloc(len * sizeof(element_type));
- if (elem == NULL) {
- printf("MultiDeleteStaticSequenceList:鍒嗛厤绌洪棿澶辫触锛乗n");
- }
- else {
- for (int i = index; i < list->length - len; i++) {
+ 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;
+ list->data[i] = list->data[i + len];
}
list->length -= len;
return 0;
@@ -246,17 +241,13 @@ int MultiDeleteDynamicSequenceList(DynamicSequenceList* list, int index, int len
printf("MultiDeleteDynamicSequenceList:鍒犻櫎绱㈠紩瓒呰繃绱㈠紩鑼冨洿锛乗n");
return 1;
}
- elem = (element_type*)malloc(len * sizeof(element_type));
- if (elem == NULL) {
- printf("MultiDeleteDynamicSequenceList:鍒嗛厤绌洪棿澶辫触锛乗n");
- }
- else {
- for (int i = index; i < list->length - len; i++) {
+ 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;
+ list->data[i] = list->data[i + len];
}
+ list->length -= len;
return 0;
}
@@ -264,7 +255,7 @@ int MultiDeleteDynamicSequenceList(DynamicSequenceList* list, int index, int len
element_type GetStaticSequenceListElement(StaticSequenceList list, int index) {
if (index >= list.length || index < 0) {
printf("GetStaticSequenceListElement:鏌ユ壘绱㈠紩瓒呰繃绱㈠紩鑼冨洿锛乗n");
- return NULL;
+ return DEFAULTELEM;
}
return list.data[index];
}
@@ -273,7 +264,7 @@ element_type GetStaticSequenceListElement(StaticSequenceList list, int index) {
element_type GetDynamicSequenceListElement(DynamicSequenceList list, int index) {
if (index >= list.length || index < 0) {
printf("GetDynamicSequenceListElement:鏌ユ壘绱㈠紩瓒呰繃绱㈠紩鑼冨洿锛乗n");
- return NULL;
+ return DEFAULTELEM;
}
return list.data[index];
}
@@ -322,6 +313,10 @@ int EmptyDynamicSequenceList(DynamicSequenceList list) {
// 閿姣佸姩鎬侀『搴忚〃
int DestroyDynamicSequenceList(DynamicSequenceList* list) {
- free(list);
+ if (list != NULL) {
+ free(list->data);
+ }
+ list = NULL;
+ return 0;
}
diff --git a/Code/test.c b/Code/test.c
index 5fac405..a3b0034 100644
--- a/Code/test.c
+++ b/Code/test.c
@@ -1,7 +1,7 @@
// 测试文件
-#include "head.h"
#include "sequence_list.h"
+#include "link_list.h"
int SequenceListTest() {
DynamicSequenceList list;
@@ -13,15 +13,28 @@ int SequenceListTest() {
//printf("%d", list.length);
PrintfDynamicSequenceList(list);
printf("\n");
- element_type elem;
- MultiDeleteDynamicSequenceList(&list, 2, 2, &elem);
+ 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');
+ /*int index = LocateDynamicSequenceListElement(list, '5');
printf("%d", index);
+ DestroyDynamicSequenceList(&list);*/
+ return 0;
+}
+
+int LinkListTest() {
+ //LinkList list;
+ //InitLinkListWithHead(list);
+ //int empty = EmptyLinkListWithHead(list);
+ //printf("%d", empty);
return 0;
}
diff --git a/Data-Structrue/1-linear-list.md b/Data-Structrue/1-linear-list.md
index 6162f66..af8b497 100644
--- a/Data-Structrue/1-linear-list.md
+++ b/Data-Structrue/1-linear-list.md
@@ -108,7 +108,7 @@ typedef struct {
姣忎釜缁撶偣鍙寘鍚竴涓寚閽堝煙锛屼篃绉颁负绾挎ч摼琛ㄣ
-閫氬父鐢ㄥご鎸囬拡鏉ユ爣璇嗕竴涓崟閾捐〃锛屽鍗曢摼琛↙銆
+閫氬父鐢ㄥご鎸囬拡鏉ユ爣璇嗕竴涓崟閾捐〃锛屽鍗曢摼琛$L$銆
### 鍗曢摼琛ㄧ壒鐐
@@ -116,9 +116,19 @@ typedef struct {
+ 涓嶅彲闅忔満瀛樺彇銆
+ 瑕佽姳璐瑰浣欑┖闂村瓨鏀炬寚閽堛
+鏄潪闅忔満瀛樺彇鐨勫瓨鍌ㄧ粨鏋勩
+
### 鍗曢摼琛ㄥ畾涔
-浣跨敤LinkNode琛ㄧず涓涓崟閾捐〃缁撶偣鐨勭粨鏋勪綋锛岃屼娇鐢↙inkList琛ㄧず涓涓崟閾捐〃锛屽叾瀹濴inkList鏄竴涓寚鍚慙inkNode鐨勬寚閽堝彉閲忋傚瀹氫箟LinkList L绛変环浜嶭inkNode* L銆
+浣跨敤`LinkNode`琛ㄧず涓涓崟閾捐〃缁撶偣鐨勭粨鏋勪綋锛岃屼娇鐢╜LinkList`琛ㄧず涓涓崟閾捐〃锛屽叾瀹瀈LinkList`鏄竴涓寚鍚慲LinkNode`鐨勬寚閽堝彉閲忋傚瀹氫箟`LinkList L`绛変环浜巂LinkNode* L`銆
+
+```c
+// 鍗曢摼琛ㄧ粨鐐
+typedef struct LinkListNode {
+ element_type data;
+ struct LinkListNode* next;
+} LinkListNode, *LinkList;
+```
### 鍗曢摼琛ㄦ搷浣
@@ -126,6 +136,9 @@ typedef struct {
鏈夊甫澶磋妭鐐逛笌涓嶅甫澶磋妭鐐圭殑鍒濆鍖栫殑鍖哄埆锛屽甫澶磋妭鐐逛唬琛ㄧ涓涓粨鐐逛笉瀛樻斁鏁版嵁锛屽彧鏄敤浜庢爣璇嗗崟閾捐〃鐨勫紑濮嬶紝浣嗘槸鍖哄埆涓嶅ぇ锛屽甫澶寸粨鐐规洿濂戒娇鐢ㄣ
++ 鐢变簬绗竴涓暟鎹粨鐐圭殑浣嶇疆琚瓨鏀惧湪澶寸粨鐐圭殑鎸囬拡鍩熶腑锛屽洜姝ゅ湪閾捐〃鐨勭涓涓綅缃笂鐨勬搷浣滃拰鍦ㄨ〃鐨勫叾浠栦綅缃笂鐨勬搷浣滀竴鑷达紝鏃犻』杩涜鐗规畩澶勭悊銆
++ 鏃犺閾捐〃鏄惁涓虹┖锛屽叾澶存寚閽堥兘鎸囧悜澶寸粨鐐圭殑闈炵┖鎸囬拡锛堢┖琛ㄤ腑澶寸粨鐐圭殑鎸囬拡鍩熶负绌)锛屽洜姝ょ┖琛ㄥ拰闈炵┖琛ㄧ殑澶勭悊涔熷氨寰楀埌浜嗙粺涓銆
+
#### 鍗曢摼琛ㄦ彃鍏
鎻掑叆鏂瑰紡涓鍏卞垎涓轰笅闈㈠嚑绉嶏細
diff --git a/Operate-System/0-summary-ex.md b/Operate-System/0-summary-ex.md
new file mode 100644
index 0000000..9905486
--- /dev/null
+++ b/Operate-System/0-summary-ex.md
@@ -0,0 +1,2 @@
+# 姒傝堪涔犻
+