#include <stdio.h>
#include <stdlib.h>
#define List_Init_size 100 // 初始分配空间
#define Link_Increasment 10 // 增量
typedef struct {
int* data;
int length;
int listsize;
} Sqlist;
void Initlist(Sqlist* L) {
L->data = (int*)malloc(List_Init_size * sizeof(int));
if (L->data == NULL) {
// 分配内存空间失败的处理逻辑
return;
}
L->length = 0;
L->listsize = List_Init_size;
}
void List_insert(Sqlist* L, int i, int data) {
if (i < 1 || i > L->length + 1) {
return;
}
if (L->length >= L->listsize) {
L->data = (int*)realloc(L->data, (L->listsize + Link_Increasment) * sizeof(int));
if (L->data == NULL) {
// 分配内存空间失败的处理逻辑
return;
}
L->listsize += Link_Increasment;
}
int* p = L->data + i - 1;
int* base = L->data + L->length - 1;
while (base >= p) {
*(p + 1) = *p;
p--;
}
*(L->data + i - 1) = data;
L->length++;
}
void List_delete(Sqlist* L, int i) {
if (i < 1 || i > L->length) {
return;
}
int* p;
p = L->data + i - 1;
int* base;
base = L->data + L->length - 1;
while (p < base) {
*p = *(p + 1);
p++;
}
L->length--;
}
void List_change(Sqlist* L, int i, int data) {
if (i < 1 || i > L->length) {
return;
}
int* p;
p = L->data + i - 1;
*p = data;
}
void List_search(Sqlist* L, int i) {
if (i < 1 || i > L->length) {
return;
}
int* p;
p = L->data + i - 1;
printf("%d\n", *p);
}
int main() {
Sqlist sqlist;
Initlist(&sqlist);
for (int i = 1; i <= 10; i++) {
List_insert(&sqlist, i, i);
}
for (int i = 1; i <= 10; i++) {
List_search(&sqlist, i);
}
printf("-------------------\n");
List_delete(&sqlist,5);
for (int i = 1; i <= 10; i++) {
List_search(&sqlist, i);
}
printf("-------------------\n");
List_change(&sqlist,1,99);
for (int i = 1; i <= 10; i++) {
List_search(&sqlist, i);
}
free(sqlist.data);
return 0;
}