以较高的效率实现删除线性表中元素值在x到y(x和y自定)之间的所有元素。
#include<stdio.h> #include<stdlib.h> #define X 10 #define Y 30 #define N 20 int A[N] = { 2, 5, 15, 30, 1, 40, 17, 50, 9, 21, 32, 8, 41, 22, 49, 31, 33, 18, 80, 5 }; void del(int *A, int *n, int x, int y) { int i, j; for (i = j = 0; i < *n; i++) if (A[i] > y || A[i] < x) // 不在x到y之间,则保留 A[j++] = A[i]; *n = j; } void output(int *A, int n) { int i; printf("\n数组有%d个元素:\n", n); for (i = 0; i < n; i++) { printf("%7d", A[i]); if ((i + 1) % 10 == 0) printf("\n"); } printf("\n"); } int main() { int n; n = N; output(A, n); del(A, &n, X, Y); output(A, n); system("pause"); return 0; }