用c语言写代码 在顺序表第i个位置插入元素
时间: 2024-09-22 11:05:49 浏览: 45
在 C 语言中,如果我们要在顺序表(数组)的第 i 个位置插入一个元素,首先我们需要确保列表有足够的空间并且 i 是合法的位置(不会越界)。下面是一个简单的示例,假设我们有一个动态大小的整数数组:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体表示顺序表(数组)
typedef struct {
int* data; // 数据指针
size_t capacity; // 数组容量
size_t size; // 当前元素数量
} SequenceList;
// 动态分配内存并插入元素
void insert_at_index(SequenceList* list, int index, int value) {
if (index > list->size || index > list->capacity) {
printf("插入位置超出范围!\n");
return;
}
// 如果需要扩容,先将现有数据复制到新的大数组
if (list->size == list->capacity) {
list->capacity *= 2;
list->data = realloc(list->data, sizeof(int) * list->capacity);
}
// 将所有大于等于目标索引的元素向后移动一位
for (size_t i = list->size; i > index; i--) {
list->data[i] = list->data[i - 1];
}
// 插入新值
list->data[index] = value;
// 更新元素数量
list->size++;
}
int main() {
// 初始化顺序表
SequenceList list = {NULL, 0, 0};
// 示例插入操作
int num_to_insert = 5;
int insert_pos = 2;
insert_at_index(&list, insert_pos, num_to_insert);
// 打印顺序表内容
for (size_t i = 0; i <= list.size; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
free(list.data); // 注意释放不再需要的内存
return 0;
}
```
阅读全文