#include <stdio.h>
void insertAtMiddle(int arr[], int *size, int capacity, int value, int index) {
if (*size >= capacity) {
printf("Array is full, cannot insert.\n");
return;
}
// Shift elements right from the end to index
for (int i = *size - 1; i >= index; i--) {
arr[i + 1] = arr[i]; // shift element right
}
arr[index] = value; // insert new value
(*size)++; // increase size
}
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d", arr[i]);
if (i != size - 1) printf(" -> ");
}
printf("\n");
}
int main() {
int capacity = 10;
int arr[10] = {1, 2, 3, 4, 5};
int size = 5;
int value = 99;
int index = 2; // middle index
insertAtMiddle(arr, &size, capacity, value, index);
printArray(arr, size);
return 0;
}
for (int i = *size - 1; i >= index; i--) { arr[i + 1] = arr[i]; }
Shift elements right from the end to index to make space
Insert new value at the middle index
Increase array size after insertion
1 -> 2 -> 99 -> 3 -> 4 -> 5