#include <stdio.h>
#include <stdlib.h>
typedef struct LinearList {
int *elements; // 动态数组存储元素
int length; // 线性表当前长度
int capacity; // 线性表当前容量
} LinearList;
// 初始化线性表
void init(LinearList *list, int initial_capacity) {
list->capacity = initial_capacity;
list->length = 0;
list->elements = (int *)malloc(sizeof(int) * list->capacity);
}
// 插入元素
void insert(LinearList *list, int position, int value) {
if (position < 0 || position > list->length) {
printf("Position is out of range.\n");
return;
}
if (list->length == list->capacity) {
// 扩容逻辑(这里省略)
}
for (int i = list->length; i > position; i--) {
list->elements[i] = list->elements[i - 1];
}
list->elements[position] = value;
list->length++;
}
// 删除元素
void delete(LinearList *list, int position) {
if (position < 0 || position >= list->length) {
printf("Position is out of range.\n");
return;
}
for (int i = position; i < list->length - 1; i++) {
list->elements[i] = list->elements[i + 1];
}
list->length--;
}
// 打印线性表
void print(LinearList *list) {
for (int i = 0; i < list->length; i++) {
printf("%d ", list->elements[i]);
}
printf("\n");
}
int main() {
LinearList list;
init(&list, 5); // 初始容量为5
// 插入元素
insert(&list, 0, 1);
insert(&list, 0, 2);
// 打印线性表
print(&list);
insert(&list, 1, 3);
// 打印线性表
print(&list);
// 删除元素
delete(&list, 1);
// 打印线性表
print(&list);
// 释放内存
free(list.elements);
return 0;
}
输出
2 1
2 3 1
2 1