//START Makefile all: main Vector.o: Vector.c Vector.h gcc -Wall -c Vector.c vectortest.o: vectortest.c gcc -Wall -c vectortest.c main: vectortest.o Vector.o gcc -Wall -o Vector vectortest.o Vector.o clean: -rm -f *.o Vector //START Vector.c #include #include "Vector.h" Vector create(int def_size){ Vector v; v = malloc(sizeof(vectorStruct)); v->array = malloc(def_size * sizeof(TYPE)); v->size = 0; v->max_size = def_size; return v; } int destroy(Vector v){ /* For Dynamic allocated TYPE's // for(i=0;isize;i++){ // free(v->array[i]); // } */ free(v->array); free(v); return 1; } TYPE get(Vector v, int index){ if (index >= v->size) { return (int)NULL; } return v->array[index]; } void put(Vector v, TYPE obj, int index){ if (index >= v->size) { return; } v->array[index] = obj; } void add(Vector v, TYPE obj){ if (v->size == v->max_size){ v->max_size = v->max_size * 2; v->array = realloc(v->array, (v->max_size * 2) * sizeof(TYPE)); } v->array[v->size++] = obj; } TYPE first(Vector v){ return v->array[0]; } TYPE last(Vector v){ return v->array[v->size]; } int size(Vector v){ return v->size; } //START Vector.h #ifndef __VECTOR_H__ #define __VECTOR_H__ #ifndef TYPE #define TYPE int #endif typedef struct{ TYPE *array; int size; int max_size; }vectorStruct; typedef vectorStruct* Vector; /** * Return the newly created Vector * */ Vector create(int defSize); /** * return 1 if destroied successfully * */ int destroy(Vector v); /** * return TYPE at index * */ TYPE get(Vector v, int index); /** * change TYPE at index * */ void put(Vector v, TYPE obj, int index); /** * add TYPE to end of Vector * */ void add(Vector v, TYPE obj); /** * return TYPE at start * */ TYPE first(Vector v); /** * return TYPE at end * */ TYPE last(Vector v); /** * return number of elements * */ int size(Vector v); #endif // START vectortest.c #include #include "Vector.h" int main(int argc, char** argv){ Vector v = create(20); int i; for(i=0;i<100;i++){ add(v,i); } put(v,35,99); for(i=0;i<100;i++){ printf("%d\n",get(v,i)); } return 1; }