C语言实现顺序表的数据结构设计
时间: 2024-10-20 10:09:41 浏览: 20
【数据结构实现】C语言实现顺序表
在C语言中,我们可以简单地通过数组来实现顺序表数据结构。这种实现不需要额外的动态内存分配,因为数组的大小是在编译时确定的。下面是一个基本的顺序表设计:
```c
typedef struct {
int capacity; // 表的最大容量
int size; // 当前元素的数量
int* data; // 存放元素的实际数组
} SeqList;
// 初始化一个新的顺序表,默认容量为0
SeqList* create_seq_list() {
SeqList* list = malloc(sizeof(SeqList));
list->capacity = 0;
list->size = 0;
list->data = NULL;
return list;
}
// 在列表末尾添加一个元素,如果已满则扩大容量
void append(SeqList* list, int value) {
if (list->size == list->capacity) {
list->capacity *= 2; // 扩容一倍
list->data = realloc(list->data, sizeof(int) * list->capacity);
}
list->data[list->size++] = value;
}
// 删除指定索引处的元素,并调整后面的元素位置
void remove(SeqList* list, int index) {
if (index < 0 || index >= list->size) {
return;
}
for (int i = index; i < list->size - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->size--;
}
// 释放顺序表占用的内存
void destroy_seq_list(SeqList* list) {
free(list->data);
free(list);
}
// 访问指定索引的元素
int get(SeqList* list, int index) {
if (index < 0 || index >= list->size) {
return -1; // 或者抛出异常
}
return list->data[index];
}
```
阅读全文