/* Example 18.2 : Filtering an array with a queue Removes all negative numbers from an array using queue Author: Peter Brusilovsky */ #include "QueueIntAr.h" #include #define N 10 /* dimension of the array */ void readarray(int ar[], int n); void filter_array(int ar[], int n); void printarray(int ar[], int n); main() { /* declare an array */ int testarray[N]; /* elements from ar[0] to ar[N-1]; */ readarray(testarray, N); printf("Before filtering, numbers are: "); printarray(testarray, N); filter_array(testarray, N); printf("After filtering, numbers are: "); printarray(testarray, N); return 0; } /* integer array input */ void readarray(int ar[], int n_of_elements) { int i; for (i = 0; i < n_of_elements; ++i) { printf("%d> ", i); scanf("%d", &ar[i]); } return; } /* print integer array */ void printarray(int ar[], int n_of_elements) { int i; for (i = 0; i < n_of_elements; ++i) printf ("%d ", ar[i]); printf("\n"); return; } /* filter integer array by removing negative numbers */ void filter_array(int ar[], int n) { int i; struct intqueue *q; q = createQueue(N); for (i = 0; i < n; ++i) if (ar[i] >= 0) enqueue(q, ar[i]); for (i = 0; i < n; ++i) if (emptyQueue(q)) ar[i] = 0; else dequeue(q, &ar[i]); destroyQueue(q); return; }