rendered paste body//START Makefileall: mainVector.o: Vector.c Vector.h gcc -Wall -c Vector.cvectortest.o: vectortest.c gcc -Wall -c vectortest.cmain: vectortest.o Vector.o gcc -Wall -o Vector vectortest.o Vector.oclean: -rm -f *.o Vector//START Vector.c#include <stdlib.h>#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;i<v->size;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#endiftypedef 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 <stdio.h>#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;}