用C语言实现线性表的以下功能: 1.初始化顺序表 2.插入数据到顺序表 3.查询指定元素在顺序表中的位置 4.通过指定位置删除顺序表的节点 5 修改指定位置的元素
时间: 2024-09-29 14:07:00 浏览: 48
[C语言数据结构]线性表-顺序表介绍及其基础操作函数实现
在C语言中,我们可以使用数组来模拟顺序表的数据结构。以下是实现上述功能的基本步骤:
1. **初始化顺序表**:
```c
typedef struct {
int* data; // 存储元素的指针
int size; // 当前元素的数量
int capacity; // 数组的最大容量
} List;
// 初始化函数
void init_list(List* list) {
list->data = (int*)malloc(capacity * sizeof(int)); // 分配内存
list->size = 0;
list->capacity = 10; // 初始容量设为10
}
```
2. **插入数据到顺序表**:
```c
void insert(List* list, int value) {
if (list->size == list->capacity) { // 如果已满,扩大容量
list->capacity *= 2; // 新增一倍空间
list->data = (int*)realloc(list->data, list->capacity * sizeof(int));
}
list->data[list->size++] = value; // 插入元素并更新大小
}
```
3. **查询指定元素的位置**:
```c
int search(List* list, int target) {
for (int i = 0; i < list->size; i++) {
if (list->data[i] == target) return i; // 找到就返回索引
}
return -1; // 没找到返回-1
}
```
4. **通过指定位置删除顺序表的节点**:
```c
void delete(List* list, int position) {
if (position >= 0 && position < list->size) {
memmove(&list->data[position], &list->data[position + 1], (list->size - position - 1) * sizeof(int)); // 移动元素
list->size--; // 减小大小
if (position < list->size - 1) {
list->data[--list->size] = 0; // 清除最后一个元素(防止内存泄漏)
} else {
free(list->data); // 非空时释放内存
list->data = NULL;
}
}
}
```
5. **修改指定位置的元素**:
```c
void modify(List* list, int position, int new_value) {
if (position >= 0 && position < list->size) {
list->data[position] = new_value;
}
}
```
阅读全文