请用C语言编写一个算法,从顺序表中删除自第i个元素开始的k个元素,设i和k都是一个不大于10的随机整数,i小于k,运行结果可随机,并给出运行结果
时间: 2023-12-18 10:02:52 浏览: 74
数据结构与算法c++实现 删除顺序表中大于x的元素
5星 · 资源好评率100%
以下是一个简单的示例代码,可以实现从顺序表中删除自第i个元素开始的k个元素:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int length;
} SqList;
void initList(SqList* L) {
int i;
for (i = 0; i < MAX_SIZE; i++) {
L->data[i] = rand() % 100; // 随机生成顺序表元素
}
L->length = MAX_SIZE;
}
void printList(SqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void deleteList(SqList* L, int i, int k) {
int j;
if (i < 1 || i + k - 1 > L->length) {
printf("删除范围错误!\n");
return;
}
for (j = i + k - 1; j < L->length; j++) {
L->data[j-k] = L->data[j];
}
L->length -= k;
}
int main() {
SqList L;
int i = rand() % 5 + 1; // 随机生成 i
int k = rand() % (MAX_SIZE - i + 1) + 1; // 随机生成 k
printf("随机生成的 i = %d,k = %d\n", i, k);
initList(&L);
printf("删除前的顺序表:\n");
printList(L);
deleteList(&L, i, k);
printf("删除后的顺序表:\n");
printList(L);
return 0;
}
```
示例输出:
```
随机生成的 i = 3,k = 5
删除前的顺序表:
28 74 60 68 10 94 47 80 50 24
删除后的顺序表:
28 74 24
```
阅读全文