Program to reverse array
1. Reversing character array (string)
Program 1:
#include <stdio.h>
#include <string.h>
char *reverse_string(char *str)
{
char temp = 0;
int length = strlen(str);
int start = 0;
int end = length - 1;
/* Model 1 */
while (start < end) {
/* Swap characters at start and end */
temp = str[start];
str[start] = str[end];
str[end] = temp;
/* Move start and end towards the center */
start++;
end--;
}
/* Model 2 */
while (start < end) {
/* XOR swap elements at start and end */
str[start] ^= str[end];
str[end] ^= str[start];
str[start] ^= str[end];
/* move start and end towards the center */
start++;
end--;
}
return;
}
int main()
{
char str[] = "Hello, World!";
printf("Original string: %s\n", str);
reverse_string(str);
printf("Reversed string: %s\n", str);
return 0;
}
2. Reversing integer array
#include <stdio.h>
void reverse_array(int arr[], int size)
{
int temp = 0;
int start = 0;
int end = size - 1;
/* Model 1 */
while (start < end) {
/* Swap elements at start and end */
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
/* Move start and end towards the center */
start++;
end--;
}
/* Model 2 */
while (start < end) {
/* XOR swap elements at start and end */
arr[start] ^= arr[end];
arr[end] ^= arr[start];
arr[start] ^= arr[end];
/* Move start and end towards the center */
start++;
end--;
}
/* Model 3 */
int i = 0;
for(i = 0; i < size/2; i++){
temp = arr[i];
arr[i] = arr[size - i - 1];
arr[size - i - 1] = temp;
}
return;
}
int main()
{
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Original Array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
reverse_array(arr, size);
printf("\nReversed Array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
Last updated