线性表结构体开辟空间
时间: 2024-04-01 17:27:35 浏览: 16
以下是C语言中线性表结构体开辟空间的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *data; // 数据指针
int length; // 当前长度
int capacity; // 总容量
} SeqList;
// 初始化顺序表
void init(SeqList *list, int capacity) {
list->data = (int *)malloc(sizeof(int) * capacity);
list->length = 0;
list->capacity = capacity;
}
// 扩容
void expand(SeqList *list) {
int *oldData = list->data;
list->capacity *= 2;
list->data = (int *)malloc(sizeof(int) * list->capacity);
for (int i = 0; i < list->length; i++) {
list->data[i] = oldData[i];
}
free(oldData);
}
// 插入元素
void insert(SeqList *list, int index, int value) {
if (list->length >= list->capacity) {
expand(list);
}
for (int i = list->length; i > index; i--) {
list->data[i] = list->data[i - 1];
}
list->data[index] = value;
list->length++;
}
// 删除元素
void delete(SeqList *list, int index) {
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
}
// 获取元素
int get(SeqList *list, int index) {
return list->data[index];
}
// 修改元素
void set(SeqList *list, int index, int value) {
list->data[index] = value;
}
// 销毁顺序表
void destroy(SeqList *list) {
free(list->data);
list->data = NULL;
list->length = 0;
list->capacity = 0;
}
int main() {
SeqList list;
init(&list, 10);
insert(&list, 0, 1);
insert(&list, 1, 2);
insert(&list, 2, 3);
printf("%d\n", get(&list, 1)); // 输出:2
set(&list, 1, 4);
printf("%d\n", get(&list, 1)); // 输出:4
delete(&list, 1);
printf("%d\n", get(&list, 1)); // 输出:3
destroy(&list);
return 0;
}
```