aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c127
1 files changed, 2 insertions, 125 deletions
diff --git a/main.c b/main.c
index ab99fb3..0c0b282 100644
--- a/main.c
+++ b/main.c
@@ -1,129 +1,6 @@
1#include <stdio.h> 1#include <stdio.h>
2#include <stdlib.h> 2#include <stdlib.h>
3 3#include "vector.h"
4
5typedef struct {
6 int *arr;
7 int max_size;
8 int cur_size;
9} vector_t;
10
11vector_t vector_init(int size){
12 vector_t vec;
13 vec.max_size = size;
14 vec.arr = malloc(sizeof(int)*vec.max_size);
15 vec.cur_size = 0;
16 return vec;
17}
18
19int size(vector_t vec){
20 return vec.cur_size;
21}
22
23int capacity(vector_t vec){
24 return vec.max_size;
25}
26
27int is_empty(vector_t vec){
28 if (vec.cur_size == 0){
29 return 1;
30 }
31 return 0;
32}
33
34int is_full(vector_t vec){
35 if (vec.cur_size >= vec.max_size){
36 return 1;
37 }
38 return 0;
39}
40
41int at(vector_t vec, int index){
42 if (index >= vec.max_size){
43 printf("Index out of bound!!\n");
44 exit(1);
45 }
46
47 return vec.arr[index];
48}
49
50void push(vector_t *vec, int value){
51 if (is_full(*vec)){
52 printf("Array out of Size!!\n\
53 Can't push!! \n\
54 Not yet implemented resize!!\n");
55 exit(1);
56 }
57
58 vec->arr[vec->cur_size] = value;
59 vec->cur_size++;
60}
61
62void insert(vector_t *vec, int index, int val){
63 if (is_full(*vec)){
64 printf("Array out of Size!!\n\
65 Can't insert!\n\
66 Not yet implemented resize!!\n");
67 exit(1);
68 }
69
70 int tmp;
71 for (int i = index; i <= vec->cur_size; i++){
72 tmp = val;
73 val = vec->arr[i];
74 vec->arr[i] = tmp;
75 }
76 vec->cur_size += 1;
77}
78
79void delete(vector_t *vec, int index){
80 if (!(index < vec->cur_size)){
81 printf("Invalid Index!\nFailed to Delete Element\n");
82 exit(-1);
83 }
84 int len = vec->cur_size - 1;
85
86 for (int i = index; i < len; i++){
87 vec->arr[i] = vec->arr[i+1];
88 }
89
90 vec->cur_size = vec->cur_size - 1;
91}
92
93void remove_val(vector_t *vec, int value){
94 int i = 0;
95 while (i < vec->cur_size){
96 if (vec->arr[i] == value){
97 delete(vec, i);
98 continue;
99 }
100 i++;
101 }
102}
103
104void prepend(vector_t *vec, int value){
105 insert(vec, 0, value);
106}
107
108int pop(vector_t *vec){
109 // remove item at the end, return value
110 int ret = vec->arr[vec->cur_size-1];
111 vec->cur_size--;
112 return ret;
113}
114
115void print_vec(vector_t vec){
116 printf("[");
117 for (int i = 0; i < vec.cur_size; i++){
118 printf("%d ", vec.arr[i]);
119
120 }
121 printf("]\n");
122}
123
124void destroy_vec(vector_t *vec){
125 free(vec->arr);
126}
127 4
128int main(void){ 5int main(void){
129 vector_t vec = vector_init(16); 6 vector_t vec = vector_init(16);
@@ -146,7 +23,7 @@ int main(void){
146 remove_val(&vec, 5); 23 remove_val(&vec, 5);
147 /* for (int i = 0; i < vec.max_size; i++){ */ 24 /* for (int i = 0; i < vec.max_size; i++){ */
148 /* printf("pop: %d\n", pop(&vec)); */ 25 /* printf("pop: %d\n", pop(&vec)); */
149 /* delete(&vec, 0); */ 26 /* delete_vec(&vec, 0); */
150 /* } */ 27 /* } */
151 28
152 printf("The size of the vector is %d.\n", size(vec)); 29 printf("The size of the vector is %d.\n", size(vec));