题目:从顺序表中删除其值在给定值s与t之间(包含s和t,要求s<t)的所有元素,若s或t不合理或顺序表为空则显示出错信息退出运行
注意和上题不一样,这次不是有序的!
完整代码如下:
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
void initSeqList(SeqList *list) {
list->length = 0;
}
void displaySeqList(SeqList list) {
printf("SeqList: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
void deleteElementsBetween(SeqList *list, int s, int t) {
if (s >= t || list->length == 0) {
return;
}
int i, j;
for (i = 0, j = 0; j < list->length; j++) {
if (list->data[j] < s || list->data[j] > t) {
list->data[i] = list->data[j];
i++;
}
}
list->length = i;
}
int main() {
SeqList list;
initSeqList(&list);
// 添加一些元素到顺序表中
list.data[0] = 1;
list.data[1] = 5;
list.data[2] = 3;
list.data[3] = 7;
list.length = 4;
displaySeqList(list);
int s = 2, t = 6;
deleteElementsBetween(&list, s, t);
displaySeqList(list);
return 0;
}