用c语言实现一个顺序存储的线性表
时间: 2024-10-15 09:26:38 浏览: 49
在C语言中,我们可以使用数组来实现一个简单的顺序存储的线性表。这种线性表的特点是元素按照线性顺序存储,并通过索引来访问它们。下面是一个基本的例子,展示如何创建、插入和删除元素:
```c
#include <stdio.h>
// 定义线性表结构体
typedef struct {
int *data; // 数据指针
int capacity; // 存储容量
int size; // 当前元素个数
} LinearList;
// 初始化线性表
LinearList* create_list(int capacity) {
LinearList *list = (LinearList*) malloc(sizeof(LinearList));
list->data = (int*) malloc(capacity * sizeof(int));
list->capacity = capacity;
list->size = 0;
return list;
}
// 插入元素到线性表末尾
void insert(LinearList *list, int value) {
if (list->size == list->capacity) {
// 扩容
int new_capacity = list->capacity * 2;
int* newData = (int*) realloc(list->data, new_capacity * sizeof(int));
list->data = newData;
list->capacity = new_capacity;
}
list->data[list->size] = value;
list->size++;
}
// 删除指定位置的元素(假设0-based)
void delete(LinearList *list, int index) {
if (index >= 0 && index < list->size) {
for (int i = index; i < list->size - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->data[--list->size] = 0; // 清理最后一个元素
free(list->data[list->size]);
} else {
printf("Invalid index.\n");
}
}
// 打印线性表内容
void print_list(LinearList *list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
LinearList *list = create_list(5);
insert(list, 10);
insert(list, 20);
print_list(list); // 输出: 10 20
delete(list, 0);
print_list(list); // 输出: 20
free(list->data);
free(list);
return 0;
}
```
在这个例子中,我们首先创建了一个`LinearList`结构体,包含指向数据的指针、存储容量和元素个数。然后实现了初始化、插入、删除和打印列表的方法。
阅读全文