#include #include void inputArray ( int arr[], int n ) { int i; for ( i = 0; i < n; ++i ) scanf("%d", (arr+i)); // same as &arr[i] } void swap ( int *p, int *q ) { int temp = *p; *p = *q; *q = temp; } void reverseArray ( int *arr, int start, int end, int *c ) { if ( start < end ) { if ( arr[start] != arr[end]) { swap(&arr[start], &arr[end]); *c = *c + 1; } reverseArray(arr, start+1, end-1, c); } } void printArray ( int *arr, int n ) { int i; for ( i = 0; i < n; ++i ) printf("%p : %d\n", (arr+i), *(arr+i)); // same as &arr[i] and arr[i] } int main () { int *A, n, count=0; printf("Enter Number of Elements: "); scanf("%d", &n); A = (int *) malloc(n * sizeof(int)); if ( A == NULL ) { printf("Malloc Error!\n"); return 1; } printf("Enter %d Array Elements (Original): ", n); inputArray(A, n); reverseArray(A, 0, n-1, &count); printf("The %d Array Elements (Reversed):\n", n); printArray(A, n); printf("Total Number of Swaps = %d\n", count); free(A); return 0; }