#include typedef struct dynArrStruct { double *location; int length; int currSize; } dynArr; void init (dynArr* a, int size) { a->location = (double *) malloc (sizeof(double) * (size_t)(size)); a->length = size; a->currSize = 0; } void push (dynArr* a, double val) { double *temp; int i; if (a->currSize == a->length) { printf ("Growing array from size %d ", a->length); temp = (double *) malloc (sizeof(double) * (a->length * 2)); for ( i = 0 ; i < a->currSize ; ++i) temp[i] = a->location[i]; free (a->location); a->location = temp; a->length = a->length * 2; printf ("to size %d\n", a->length); } a->location [a->currSize] = val; a->currSize ++; } void printAll (dynArr* a) { int i; for (i = 0; i < a->currSize ; i++) { printf ("Array[%d]: %f\n", i, a->location[i]); } } int main (int argc, char**argv) { struct dynArrStruct a1; dynArr a2; int i; a1.location = (double *) malloc (sizeof(double) * 100); a1.length = 100; a1.currSize = 0; a1.location[0] = 7.5; a1.currSize++; printf ("Array1[0]: %f \n", a1.location[0]); init (&a2, 10); push (&a2, 3.14); printf ("\n"); printf ("Array2[0]: %f \n", a2.location[0]); push (&a2, 3.24); push (&a2, 3.34); push (&a2, 3.44); push (&a2, 3.54); printf ("\n"); printAll (&a2); printf ("\n"); printAll (&a1); for (i = 1; i < 10; i++) a1.location[i] = i* 10.001; a1.currSize = i; printf ("\n"); printAll (&a1); printf ("\n"); for (i = 1; i < 10; i++) push (&a2, i*12.01); printf ("\n"); printAll (&a2); }