删除大于min小于max的元素c语言顺序表
时间: 2024-05-15 16:19:32 浏览: 66
C语言头文件 MINMAX
假设顺序表的元素类型为int,顺序表结构体为:
```c
#define MAX_SIZE 100 // 最大长度
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int length; // 当前长度
} SeqList;
```
实现删除大于min小于max的元素的函数如下:
```c
void deleteRange(SeqList *list, int min, int max) {
int i, j;
// 从前往后遍历顺序表
for (i = 0, j = 0; i < list->length; i++) {
// 如果当前元素不在[min, max]范围内,就跳过该元素
if (list->data[i] <= min || list->data[i] >= max) {
continue;
}
// 如果当前元素在[min, max]范围内,就把它保留下来
list->data[j++] = list->data[i];
}
// 更新顺序表长度
list->length = j;
}
```
使用示例:
```c
#include <stdio.h>
void deleteRange(SeqList *list, int min, int max);
int main() {
SeqList list = { {1, 2, 3, 4, 5, 6, 7, 8, 9}, 9 };
int min = 3, max = 7;
printf("删除前:\n");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
deleteRange(&list, min, max);
printf("删除后:\n");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
return 0;
}
void deleteRange(SeqList *list, int min, int max) {
int i, j;
// 从前往后遍历顺序表
for (i = 0, j = 0; i < list->length; i++) {
// 如果当前元素不在[min, max]范围内,就跳过该元素
if (list->data[i] <= min || list->data[i] >= max) {
continue;
}
// 如果当前元素在[min, max]范围内,就把它保留下来
list->data[j++] = list->data[i];
}
// 更新顺序表长度
list->length = j;
}
```
输出结果为:
```
删除前:
1 2 3 4 5 6 7 8 9
删除后:
4 5 6
```
阅读全文