/* ECP: FILEname=fig10_27.c */ /* 1*/ typedef int ArEtype; /* 2*/ typedef struct /* 3*/ { /* 4*/ int CurrentSize; /* 5*/ int MaxSize; /* 6*/ ArEtype *Array; /* 7*/ } VarArray; /* 1*/ void /* 2*/ Add( ArEtype X, VarArray *A ) /* 3*/ { /* 4*/ if( A->CurrentSize == A->MaxSize ) /* 5*/ { /* 6*/ if( A->CurrentSize == 0 ) /* 7*/ { /* 8*/ A->MaxSize = 2; /* 9*/ A->Array = malloc( sizeof( ArEtype ) * A->MaxSize ); /*10*/ } /*11*/ else /*12*/ { /*13*/ A->MaxSize *= 2; /*14*/ A->Array = realloc( A->Array, sizeof( ArEtype ) * /*15*/ A->MaxSize ); /*16*/ } /*17*/ if( A->Array == NULL ) /*18*/ { /*19*/ printf( "Out of space\n" ); /*20*/ exit( -1 ); /*21*/ } /*22*/ } /*23*/ A->Array[ A->CurrentSize++ ] = X; /*24*/ }