练习项目:创建顺序表,并将下面数据插入到顺序表中 [3,5,7,11,15]用C语言写
时间: 2024-09-30 08:09:46 浏览: 38
在C语言中,我们可以使用数组结构来实现一个简单的顺序表(线性表)。这里是一个基本的例子,演示如何创建顺序表并插入给定的数据:
```c
#include <stdio.h>
// 定义顺序表结构
typedef struct {
int* data; // 存储元素的指针
int size; // 序列中的元素个数
int capacity; // 序列的容量
} SequenceList;
// 动态初始化顺序表
void init_list(SequenceList* list) {
list->data = (int*)malloc(capacity * sizeof(int));
if (!list->data) {
printf("Memory allocation failed.\n");
return;
}
list->size = 0;
list->capacity = 4; // 初始容量设为4,可以根据需要调整
}
// 插入元素到列表末尾
void insert(SequenceList* list, int value) {
if (list->size == list->capacity) { // 当满了再扩容
list->capacity *= 2;
list->data = (int*)realloc(list->data, list->capacity * sizeof(int));
if (!list->data) {
printf("Memory reallocation failed.\n");
return;
}
}
list->data[list->size++] = value;
}
// 主函数插入给定数据
int main() {
SequenceList my_list;
init_list(&my_list);
int numbers[] = {3, 5, 7, 11, 15};
for (int i = 0; i < 5; i++) {
insert(&my_list, numbers[i]);
}
// 打印列表内容
for (int i = 0; i < my_list.size; i++) {
printf("%d ", my_list.data[i]);
}
printf("\n");
// 清理内存
free(my_list.data);
return 0;
}
```
在这个例子中,我们首先定义了一个顺序表结构`SequenceList`,然后实现了初始化、插入和打印功能。在主函数中,我们创建了一个新的顺序表,并依次插入给定的数据。
注意:
1. 这里没有处理错误情况,例如插入操作失败后的清理工作。
2. `realloc()`可能会改变原有地址,所以在修改指针后可能需要更新内部指针指向正确的区域。
3.
阅读全文