-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdynamic_array.c
More file actions
100 lines (58 loc) · 1.91 KB
/
dynamic_array.c
File metadata and controls
100 lines (58 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include "dynamic_array.h"
#include <stdlib.h>
#include <stdio.h>
struct DynamicArray {
int* array;
int capacity;
int n_elements;
};
DynamicArray* dynamic_array_alloc(int start_size) {
DynamicArray* myStruct = malloc(sizeof(DynamicArray));
myStruct->capacity = start_size;
myStruct->n_elements = 0;
myStruct->array = malloc(start_size * sizeof(int));
return myStruct;
}
void resize_the_array (DynamicArray* dynamic_array) {
if(dynamic_array->n_elements == dynamic_array->capacity)
{
dynamic_array->array = realloc(dynamic_array->array, sizeof(int) * (2 * dynamic_array->capacity));
dynamic_array->capacity*=2;
}
}
void dynamic_array_append(DynamicArray* dynamic_array, int element) {
resize_the_array(dynamic_array);
dynamic_array->array[dynamic_array->n_elements] = element;
dynamic_array->n_elements = dynamic_array->n_elements + 1;
}
void dynamic_array_free(DynamicArray* dynamic_array){
free(dynamic_array->array);
free(dynamic_array);
}
int dynamic_array_get_size(DynamicArray* dynamic_array){
int num_of_elements = dynamic_array->n_elements;
return num_of_elements;
}
int dynamic_array_get_at_index(DynamicArray* dynamic_array, int index) {
int element = dynamic_array->array[index];
return element;
}
void dynamic_array_insert_at(DynamicArray* dynamic_array, int element, int index)
{
resize_the_array(dynamic_array);
int i;
for (i = dynamic_array->n_elements; i > index; i--)
{
dynamic_array->array[i] = dynamic_array->array[i - 1];
}
dynamic_array->array[index] = element;
dynamic_array->n_elements++;
}
void dynamic_array_remove_at_index(DynamicArray* dynamic_array, int index){
int i;
for (i = index; i < dynamic_array->n_elements-1 ; i++)
{
dynamic_array->array[i] = dynamic_array->array[i + 1];
}
dynamic_array->n_elements--;
}