1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-06-16 23:17:21 +08:00

更新链表

This commit is contained in:
Didnelpsun
2021-08-10 23:13:38 +08:00
parent 4cdb5a75e7
commit bda198a3f5
9 changed files with 58 additions and 30 deletions

View File

@@ -116,6 +116,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<BasicRuntimeChecks>UninitializedLocalUsageCheck</BasicRuntimeChecks>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>

View File

@@ -1,7 +1,7 @@
// 初始化最大长度
#define MAXSIZE 5
// 定义默认值
#define DEFAULTELEM 0
#define DEFAULTELEM '0'
// 定义最大值
#define INFINITY 32767
// 定义默认数据类型

View File

@@ -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;

View File

@@ -4,6 +4,7 @@
int main()
{
SequenceListTest();
//SequenceListTest();
//LinkListTest();
return 0;
}

View File

@@ -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;
}

View File

@@ -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;
}