8000 Create dynamic_array_test_ans.cpp · devCharlotte/basic-algo-lecture@992067b · GitHub
[go: up one dir, main page]

Skip to content

Commit 992067b

Browse files
Create dynamic_array_test_ans.cpp
1 parent 5a27e71 commit 992067b

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

Appendix B/dynamic_array_test_ans.cpp

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
int* arr;
5+
int len = 0; // 실제 데이터가 들어있는 크기
6+
int capacity = 0; // 현재 삽입이 가능한 최대 크기
7+
8+
void init(){
9+
arr = new int[1];
10+
capacity = 1;
11+
}
12+
13+
void expand(){
14+
int* tmp = new int[2 * capacity];
15+
for(int i = 0; i < len; i++)
16+
tmp[i] = arr[i];
17+
delete [] arr;
18+
arr = tmp;
19+
capacity = 2 * capacity;
20+
}
21+
22+
void insert(int idx, int num){
23+
if(len == capacity){
24+
expand();
25+
}
26+
27+
for(int i = len; i > idx; i--)
28+
arr[i] = arr[i-1];
29+
arr[idx] = num;
30+
len++;
31+
}
32+
33+
void printArr(){
34+
for(int i = 0; i < len; i++) cout << arr[i] << ' ';
35+
cout << "| " << len << ' ' << capacity;
36+
cout << "\n\n";
37+
}
38+
39+
void insert_test(){
40+
cout << "***** insert_test *****\n";
41+
insert(0, 10); // 10, len = 1, capacity = 1
42+
printArr();
43+
insert(0, 30); // 30 10, len = 2, capacity = 2
44+
printArr();
45+
insert(1, 20); // 30 20 10, len = 3, capacity = 4
46+
printArr();
47+
insert(3, 40); // 30 20 10 40, len = 4, capacity = 4
48+
printArr();
49+
insert(1, 50); // 30 50 20 10 40, len = 5, capacity = 8
50+
printArr();
51+
insert(0, 15); // 15 30 50 20 10 40, len = 6, capacity = 8
52+
printArr();
53+
}
54+
55+
int main(void) {
56+
init();
57+
insert_test();
58+
}

0 commit comments

Comments
 (0)
0