/
array_insert_delete.cpp
82 lines (79 loc) · 1.33 KB
/
array_insert_delete.cpp
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
#include <stdio.h>
class my_array
{
private:
int size;
int capacity;
int *arr;
public:
my_array()
{
init();
}
void init()
{
arr = new int[16];
size = 0; capacity = 16;
}
void add(int lo,int num)
{
if(size < lo)
return;
if(size == capacity)
grow();
for(int i=size-1;i>=lo;i--)
arr[i+1] = arr[i];
arr[lo] = num;
size++;
}
void del(int lo)
{
del(lo,lo);
}
void del(int s,int e)
{
int pos = s;
if(s<0||e>=size)
return;
for(int i=e+1;i<size;i++)
arr[pos++] = arr[i];
size = pos;
}
void print()
{
printf("[");
for(int i=0;i<size;i++)
printf("%d ",arr[i]);
printf("]\n");
}
private:
void grow()
{
int *temp = new int[2*capacity];
for(int i=0;i<size;i++)
temp[i] = arr[i];
delete arr;
arr = temp;
capacity = 2*capacity;
}
};
my_array v;
int main(void)
{
v.add(0,1);
v.add(0,2);
v.add(0,3);
v.add(0,4);
v.add(0,5);
v.print();
v.del(4,4);
v.print();
v.add(2,6);
v.print();
v.del(1,2);
v.print();
v.del(1,2);
v.print();
v.del(0,0);
v.print();
}