summaryrefslogtreecommitdiff
path: root/rushs/evalexpr/vector/vector.c
diff options
context:
space:
mode:
Diffstat (limited to 'rushs/evalexpr/vector/vector.c')
-rw-r--r--rushs/evalexpr/vector/vector.c152
1 files changed, 0 insertions, 152 deletions
diff --git a/rushs/evalexpr/vector/vector.c b/rushs/evalexpr/vector/vector.c
deleted file mode 100644
index cbd19aa..0000000
--- a/rushs/evalexpr/vector/vector.c
+++ /dev/null
@@ -1,152 +0,0 @@
-#include "vector.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-struct vector *vector_init(size_t n)
-{
- struct vector *res = malloc(sizeof(struct vector));
- if (res == NULL)
- {
- return NULL;
- }
-
- res->size = 0;
- res->capacity = n;
- res->data = malloc(n * sizeof(int));
- if (res->data == NULL)
- {
- return NULL;
- }
- return res;
-}
-
-void vector_destroy(struct vector *v)
-{
- if (v)
- {
- free(v->data);
- free(v);
- }
-}
-
-struct vector *vector_resize(struct vector *v, size_t n)
-{
- if (!v)
- {
- return NULL;
- }
- if (n == v->capacity)
- {
- return v;
- }
- if (v)
- {
- int *tmp = realloc(v->data, n * sizeof(int));
- if (tmp == NULL)
- {
- return NULL;
- }
- v->data = tmp;
-
- if (n < v->size)
- {
- v->size = n;
- }
- v->capacity = n;
- return v;
- }
- return NULL;
-}
-
-struct vector *vector_append(struct vector *v, int elt)
-{
- if (v == NULL)
- {
- return NULL;
- }
-
- if (v->size == v->capacity)
- {
- if (vector_resize(v, v->capacity * 2) == NULL)
- {
- return NULL;
- }
- }
- v->data[v->size] = elt;
- v->size++;
- return v;
-}
-
-void vector_print(const struct vector *v)
-{
- if (v == NULL || v->size == 0)
- {
- printf("\n");
- return;
- }
- for (size_t i = 0; i < v->size - 1; i++)
- {
- printf("%d,", v->data[i]);
- }
- printf("%d\n", v->data[v->size - 1]);
-}
-
-struct vector *vector_reset(struct vector *v, size_t n)
-{
- if (vector_resize(v, n) == NULL)
- {
- return NULL;
- }
-
- v->size = 0;
- return v;
-}
-
-struct vector *vector_insert(struct vector *v, size_t i, int elt)
-{
- if (v == NULL || i > v->size)
- return NULL;
- if (i == v->size)
- {
- return vector_append(v, elt);
- }
- if (v->size == v->capacity)
- {
- if (vector_resize(v, v->capacity * 2) == NULL)
- {
- return NULL;
- }
- }
- for (size_t j = v->size; j > i; j--)
- {
- v->data[j] = v->data[j - 1];
- }
- v->size++;
-
- v->data[i] = elt;
- return v;
-}
-
-struct vector *vector_remove(struct vector *v, size_t i)
-{
- if (v == NULL || v->size == 0 || i >= v->size)
- {
- return NULL;
- }
- for (size_t j = i; j < v->size - 1; j++)
- {
- v->data[j] = v->data[j + 1];
- }
-
- v->size--;
-
- if (v->size < v->capacity / 2)
- {
- if (vector_resize(v, v->capacity / 2) == NULL)
- {
- return NULL;
- }
- }
- return v;
-}