Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "vectDynamic.h"
- #include <stdio.h>
- #include <assert.h>
- #include <stdlib.h>
- #define INIT_CAPACITY 101
- VectDinamic* createVectDinamic(int cap)
- {
- VectDinamic* v = (VectDinamic*)malloc(cap * sizeof(VectDinamic));
- if (v != NULL)
- {
- v->elems = (Element*)malloc(cap * sizeof(Element));
- v->cap = cap;
- v->lg = 0;
- return v;
- }
- else
- return 0;
- }
- void resizeVector(VectDinamic* v)
- {
- int nCap = 2 * v->cap;
- Element* nElems = (Element*)malloc(nCap * sizeof(Element));
- int i;
- if (nElems != NULL)
- {
- for (i = 0; i < v->lg; i++)
- {
- nElems[i] = v->elems[i];
- }
- free(v->elems);
- v->elems = nElems;
- v->cap = nCap;
- }
- }
- void addElement(VectDinamic *v, Element elem)
- {
- if (v->lg == v->cap)
- {
- resizeVector(v);
- }
- v->elems[v->lg] = elem;
- v->lg++;
- }
- int searchElem(VectDinamic* v, Element* elem)
- {
- int i;
- int poz = 0;
- for (i = 0; i < v->lg; i++)
- {
- poz++;
- if (v->elems[i] == elem)
- {
- return poz;
- }
- }
- return -1;
- }
- int getSize(VectDinamic* v)
- {
- return v->lg;
- }
- int deleteElement(VectDinamic* v, Element elem)
- {
- int pos = searchElem(v, elem);
- if (pos < 0)
- {
- return -1;
- }
- for (int i = pos; i < v->lg - 1; i++)
- {
- if (v->elems[i] == elem)
- {
- v->elems[i] = v->elems[i + 1];
- }
- }
- v->lg--;
- return 1;
- }
- int modifyElement(VectDinamic* v, Element elem, Element new_elem)
- {
- int i;
- int pos = searchElem(v, elem);
- if (pos < 0)
- {
- return -1;
- }
- else
- {
- for (i = 0; i < v->lg; i++)
- {
- if (v->elems[i] == elem)
- {
- v->elems[i] = new_elem;
- }
- }
- return pos;
- }
- }
- void destroyElems(VectDinamic* v)
- {
- free(v->elems);
- }
- void destroyVector(VectDinamic* v)
- {
- destroyElems(v);
- free(v);
- }
- VectDinamic* copyVect(VectDinamic* v)
- {
- VectDinamic* new_vect = (VectDinamic*)malloc(INIT_CAPACITY * sizeof(VectDinamic));
- if (new_vect != NULL)
- {
- new_vect->cap = 2 * v->cap;
- new_vect->lg = v->lg;
- new_vect->elems = (Element*)malloc(new_vect->lg * sizeof(Element));
- int i;
- for (i = 0; i < new_vect->lg; i++)
- {
- (VectDinamic*)new_vect->elems[i] = v->elems[i];
- }
- return new_vect;
- }
- }
- void testVectDinamic()
- {
- VectDinamic* v = createVectDinamic(4);
- assert(getSize(v) == 0);
- addElement(v, 1);
- addElement(v, 2);
- addElement(v, 3);
- assert(getSize(v) == 3);
- assert(searchElem(v, 1) == 1);
- assert(searchElem(v, 2) == 2);
- assert(searchElem(v, 3) == 3);
- assert(searchElem(v, 4) == -1);
- assert(modifyElement(v, 2, 3) == 2);
- }
Add Comment
Please, Sign In to add comment