创建顺序表C语言代码
时间: 2024-10-13 16:00:19 浏览: 31
创建顺序表(数组)在C语言中通常涉及以下几个步骤:
```c
#include <stdio.h>
// 定义顺序表结构体
typedef struct List {
int data; // 存储元素的数据域
int size; // 列表当前元素的数量
int capacity; // 列表的容量(预设的最大元素数量)
} List;
// 初始化函数,创建一个新的空列表
List* create_list(int capacity) {
List* list = (List*)malloc(sizeof(List)); // 分配内存
if (list != NULL) {
list->data = -1; // 空列表标记
list->size = 0;
list->capacity = capacity;
} else {
printf("Memory allocation failed.\n");
return NULL;
}
return list;
}
// 向列表添加元素
void add_element(List* list, int value) {
if (list->size == list->capacity) { // 检查是否已满
list->capacity *= 2; // 扩容
void* old_ptr = list;
list = (List*)realloc(old_ptr, sizeof(List) + sizeof(int) * list->capacity); // 动态扩容
if (list == NULL) {
printf("Failed to resize the list.\n");
return;
}
}
list->data[list->size] = value;
list->size++;
}
// 删除指定位置的元素
void delete_element(List* 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->size--;
} else {
printf("Index out of bounds.\n");
}
}
// 打印列表
void print_list(const List* list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
List* my_list = create_list(5);
if (my_list) {
add_element(my_list, 10);
add_element(my_list, 20);
add_element(my_list, 30);
print_list(my_list);
delete_element(my_list, 1);
print_list(my_list);
free(my_list);
}
return 0;
}
```
上述代码实现了创建、添加、删除和打印顺序表的基本操作。注意,这只是一个简单的示例,实际应用中可能需要考虑更多细节,如错误处理和边界检查。
阅读全文