void halfswap(int* a, int* b, int arrlen) {
int *ae = a + arrlen / 2;
while(a != ae) {
int t = *a;
*a = *b;
*b = t;
++a, ++b;
}
}
int findnum(int* a, int l, int n) {
int* c = a;
int* ae = a + l;
while(a != ae) {
if (*a == n)
return a - c;
++a;
}
return -1;
}
void removeIndex(int* a, int l, int n) {
int* ae = a + l - 1;
a += n;
while(a != ae)
*a = *(a+1), a++;
}
void removeNum(int* a, int l, int n) {
int i = findnum(a, l, n);
if (i != -1) removeIndex(a, l, i);
}
#include
int main() {
int a[] = {1, 2, 3, 4};
int b[] = {5, 6, 7, 8};
int i;
int *pa = a, *ae = a + 4;
int *pb = b, *be = b + 4;
halfswap(a, b, 4);
while(pa != ae)
printf("%d ", *pa), pa++;
putchar('\n');
while(pb != be)
printf("%d ", *pb), pb++;
putchar('\n');
removeNum(a, 4, 3);
pa = a, ae = a + 3;
while(pa != ae)
printf("%d ", *pa), pa++;
putchar('\n');
removeIndex(b, 4, 1);
pb = b, be = b + 3;
while(pb != be)
printf("%d ", *pb), pb++;
}