1. 개요
먼저 동적배열이란 뜻은 프로그래머가 크기를 설정한 배열 또는 프로그램 자체에서 크기를 조절하는 배열등으로
설명할 수 있다. 예를 들어 만약 프로그램 내부에서 배열을 사용해야 하는데, 이 때 배열이 어느정도의 크기를 가질지
모른다면 우리가 흔히 사용하는 arr[100]과 같은 정적 배열 선언 방식은 사용할 수 없다. 이 때 사용하는 방법이 가변
자료구조인 리스트나 또는 동적배열을 사용한다. 동적배열은 당연히 동적할당을 기반으로 만들어진다. 이게 첫 번째
문제다. 그리고 2번째 문제가 있다. 만약 크기100의 동적배열을 사용하다가 데이터 인풋이 이 배열의 크기를 초과할 때,
현재 데이터를 유지하면서 데이터의 인풋에 맞게 배열의 크기를 더 늘리고 싶다. 이 때, 사용되는 방법 역시 동적배열이다.
2. 문제
데이터의 수에 따라 크기가 2배로 증가하는 동적배열을 작성하시오. 단, realloc() 함수를 사용하자.
3. 코드
3-1) 메인
3-2) realloc 동적배열 함수
3-3) 출력
4. 해설
딱 3개만 기억하자.
(1) realloc() 함수를 사용할 때에는 반드시 메모리 부족으로 실패할 경우를 대비해서 주소를 저장하자! (면접때 물어봄)
(2) void* 형은 간접 참조와 포인터 연산이 불가능하며, 나중에 반환해야 하는 포인터 주소 저장을 위해서만 사용.
(3) malloc(), realloc(), memset() 등등 메모리 연산의 크기를 지정할 때에는 항상 sizeof(type)*size가 크기이다.
'테크 > 알고리즘' 카테고리의 다른 글
11. 그래프 운행 DFS(Depth First Search) 깊이 우선 탐색 (0) | 2016.05.17 |
---|---|
10. 그래프 생성 기본 ( 매트릭스와 리스트 ) (0) | 2016.05.17 |
8. 링크드 리스트가 회문(palindrome)인지 알아내는 알고리즘 (0) | 2016.05.10 |
7. 두 개의 단일 연결 리스트가 만나는 점 찾기 알고리즘 (0) | 2016.05.10 |
6. 링크드리스트 뒤집기 알고리즘 (2) | 2016.05.10 |