C 语言中顺序表的函数实现398


概述

顺序表是一种基本的线性数据结构,它由一组连续存储在内存中、同类型的元素组成。顺序表中的元素具有固定的顺序,可以通过索引来访问。在 C 语言中,顺序表通常用一个结构体来实现,其中包含以下字段:
data:指向存储表元素的数组的指针
size:表的大小,即元素的个数
capacity:表的容量,即数组的大小

函数实现以下是一些常用的顺序表函数的 C 语言实现:

1. 创建顺序表



typedef struct seq_list {
int *data;
int size;
int capacity;
} seq_list;
seq_list *create_seq_list(int initial_capacity) {
seq_list *list = malloc(sizeof(seq_list));
list->data = malloc(sizeof(int) * initial_capacity);
list->size = 0;
list->capacity = initial_capacity;
return list;
}

2. 销毁顺序表



void destroy_seq_list(seq_list *list) {
free(list->data);
free(list);
}

3. 插入元素



void insert_element(seq_list *list, int index, int element) {
if (index < 0 || index > list->size) {
return;
}
if (list->size == list->capacity) {
list->data = realloc(list->data, sizeof(int) * list->capacity * 2);
list->capacity *= 2;
}
for (int i = list->size; i > index; i--) {
list->data[i] = list->data[i - 1];
}
list->data[index] = element;
list->size++;
}

4. 删除元素



void delete_element(seq_list *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--;
}

5. 获取元素



int get_element(seq_list *list, int index) {
if (index < 0 || index >= list->size) {
return -1;
}
return list->data[index];
}

6. 设置元素



void set_element(seq_list *list, int index, int element) {
if (index < 0 || index >= list->size) {
return;
}
list->data[index] = element;
}

7. 获取顺序表大小



int get_seq_list_size(seq_list *list) {
return list->size;
}

8. 判断顺序表是否为空



int is_seq_list_empty(seq_list *list) {
return list->size == 0;
}

示例用法以下是一个示例,展示了如何使用这些函数来创建、操作和销毁顺序表:

#include
#include
int main() {
seq_list *list = create_seq_list(10);
// 插入元素
insert_element(list, 0, 1);
insert_element(list, 1, 2);
insert_element(list, 2, 3);
// 获取元素
printf("%d", get_element(list, 1));
// 设置元素
set_element(list, 1, 4);
// 删除元素
delete_element(list, 1);
// 获取顺序表大小
printf("顺序表大小:%d", get_seq_list_size(list));
// 判断顺序表是否为空
if (is_seq_list_empty(list)) {
printf("顺序表为空");
} else {
printf("顺序表不为空");
}
// 销毁顺序表
destroy_seq_list(list);
return 0;
}

通过这个示例,您可以了解如何使用 C 语言的顺序表函数来管理和操作数据。

2025-02-17


上一篇:C 语言中初始化结构体函数

下一篇:C 语言中的图形库