输入一串顺序表,长度为4,删除第3个元素,用C语言写出这段代码
时间: 2024-10-21 08:06:17 浏览: 18
在C语言中,顺序表通常是一个数组结构,删除指定位置的元素涉及到数组元素的移动。假设我们有一个简单的顺序表定义如下:
```c
typedef struct {
int* data; // 存储数据的指针
int length; // 列表长度
int capacity; // 最大容量
} List;
// 添加、删除等操作需要考虑列表的实际长度,避免越界
void deleteElement(List* list, int index) {
if (index >= 0 && index < list->length - 1) { // 避免索引越界
// 将第四个元素复制到第三个位置
list->data[index] = list->data[index+1];
// 更新长度
list->length--;
// 如果长度小于剩余容量的一半,调整容量以减少内存浪费
if (list->length < list->capacity / 2) {
list->capacity /= 2; // 缩小数组大小
}
} else {
printf("Error: Index out of bounds.\n");
}
}
```
上面的代码仅适用于删除非空列表中的元素,并且当列表长度小于最大容量的一半时会尝试优化内存。请注意,这个实现没有包含添加新元素或初始化列表的功能。
阅读全文