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 @@ +# 姒傝堪涔犻 +