写一算法,从顺序表中删除自第i个元素开始的k个元素
时间: 2023-04-23 22:02:20 浏览: 164
删除顺序表中的元素
3星 · 编辑精心推荐
算法如下:
1. 判断顺序表是否为空,如果为空则返回错误信息。
2. 判断i和k的合法性,如果i小于1或者i大于顺序表长度,或者k小于1或者i+k-1大于顺序表长度,则返回错误信息。
3. 从第i+k个元素开始,将后面的元素依次向前移动k个位置。
4. 将顺序表的长度减去k。
5. 返回删除成功的信息。
具体实现代码如下:
```
void deleteElements(int i, int k, int* list, int length) {
if (length == ) {
printf("顺序表为空,无法删除元素");
return;
}
if (i < 1 || i > length || k < 1 || i + k - 1 > length) {
printf("删除元素的位置或数量不合法");
return;
}
for (int j = i + k - 1; j < length; j++) {
list[j - k] = list[j];
}
length -= k;
printf("删除成功");
}
```
阅读全文