#include <stdio.h>
#include <stdlib.h>
void buildPrefixSum(int* arr, int n, int* prefix) {
if (n == 0) return; // handle empty array gracefully
prefix[0] = arr[0]; // start with first element
for (int i = 1; i < n; i++) {
prefix[i] = prefix[i - 1] + arr[i]; // add current element to previous sum
}
}
void printArray(int* arr, int n) {
for (int i = 0; i < n; i++) {
printf("%d", arr[i]);
if (i != n - 1) printf(" -> ");
}
printf(" -> null\n");
}
int main() {
int arr[] = {2, 4, 6, 8, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int* prefix = (int*)malloc(n * sizeof(int));
buildPrefixSum(arr, n, prefix);
printf("Original array: ");
printArray(arr, n);
printf("Prefix sums: ");
printArray(prefix, n);
free(prefix);
return 0;
}prefix[0] = arr[0]; // start with first element
initialize prefix sum with first element of array
for (int i = 1; i < n; i++) {
prefix[i] = prefix[i - 1] + arr[i]; // add current element to previous sum
}
accumulate sums by adding current element to previous prefix sum
Original array: 2 -> 4 -> 6 -> 8 -> 10 -> null
Prefix sums: 2 -> 6 -> 12 -> 20 -> 30 -> null