1. Insert(idx,value)
- idx 위치부터 뒤에있는 자료들을 모두 +1씩 옮긴다
- 옮김이 끝난 후 idx 위치에 value 값을 넣는다
- Time : O(n)
2. delete(idx)
- idx 위치의 값을 제거한다
- idx+1 위치부터 뒤에있는 자료들을 모두 -1씩 옮긴다
- Time : O(n)
3. set(idx, value)
- idx 위치의 값을 value로 수정한다
- 별다른 이동이 없이 종료된다
- Time : O(1)
4. at(idx)
- idx 위치의 값을 반환한다
5. Class Array ADT
class Array {
public:
int arr_size = 10000; //Array의 정해진 크기
float* arr; //float을 저장하는 Array arr 선언
Array() { //배열의 생성자, 초기화 작업을 담당한다
srand(9999); //랜덤 시드 설정
this->arr = new float[10000]; //Array 클래스의 변수인 arr를 크기 10000인 배열로 설정한다
for(int i=0; i<10000; i++) {
arr[i] = rand()%30000; //값을 0~30000의 랜덤수로 지정
}
}
//여기서부터 Array의 function들
//1. 배열의 idx 위치의 값을 반환한다
int at(int idx) {
return arr[idx];
}
//2. 배열의 idx 위치의 값을 수정한다
void set(int idx, int value) {
arr[idx] = value;
}
//3. 배열의 idx 위치의 값을 제거한다
void del(int idx) {
// arr[idx] = 0 //제거한다는 의미
for(int i=idx; i<9999; i++) {
arr[i] = arr[i+1]; //idx 뒤에있는 값들을 한칸씩 앞으로 이동한다
}
}
//4. 배열의 idx 위치에 값을 넣는다
void insert(int idx, int value) {
for(int i=idx; i<9999; i++) {
arr[i+1] = arr[i]; //idx 값부터 한칸씩 뒤로 이동한다
}
arr[idx] = value; //뒤로이동이 끝난후 값을 넣는다
}
};
6. main 에서 Array 사용하기
int main()
{
Array myArray = Array();
//1. insert 사용
myArray.insert(5, 1); //5위치부터 뒤로 미룬 후 1을 넣는다
//2. at 사용
int val = myArray.at(10); //10 위치값을 반환한다
//3. set 사용
myArray.set(15, 3); //15 위치값을 3으로 바꾼다
//4. del 사용
myArray.del(20); //20위치값을 제거 후 뒷 내용을 앞으로 이동한다
}
'자료구조' 카테고리의 다른 글
Stack (based Array) 실습 (0) | 2020.10.26 |
---|---|
Singly Linked List 실습문제 (0) | 2020.10.26 |
Array 실습문제 (0) | 2020.10.26 |
List 실습 (0) | 2020.10.26 |
자료구조 중간고사 정리 (0) | 2020.10.25 |