#include <stdio.h>
#include <stdlib.h>
// Function to allocate memory for an array
int* malloc_array(int size) {
int *arr = malloc(size * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed.\n");
exit(1);
}
return arr;
}
// Function to print the array
void print_array(int *arr, int size, const char *message) {
printf("%s: ", message);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
// Function to pop the first element
void pop_first_element(int **arr, int *size) {
if (*size == 0) {
printf("Array is already empty.\n");
return;
}
// Shift elements to the left
for (int i = 1; i < *size; i++) {
(*arr)[i - 1] = (*arr)[i];
}
// Decrease the size of the array
(*size)--;
// Reallocate memory
int *new_arr = realloc(*arr, (*size) * sizeof(int));
if (new_arr == NULL && *size > 0) {
printf("Memory reallocation failed.\n");
exit(1);
}
*arr = new_arr;
}
int main() {
int size = 5;
int *arr = malloc_array(size);
// Initialize array
for (int i = 0; i < size; i++) {
arr[i] = i + 1;
}
print_array(arr, size, "Original array");
// Pop the first element
pop_first_element(&arr, &size);
print_array(arr, size, "Array after popping first element");
// Free the allocated memory
free(arr);
return 0;
}
/*
run:
Original array: 1 2 3 4 5
Array after popping first element: 2 3 4 5
*/