자료구조
배열(Array), 리스트(List)
J3SUNG
2021. 5. 3. 22:59
728x90
배열이란
같은 자료형을 가진 변수를 하나로 묶어서 사용함
int arr[10];
// 타입 변수명[크기];
int arr[3] = {1, 3, 5};
cout << arr[0] << endl;
cout << arr[1] << endl;
cout << arr[2] << endl;
// 1
// 3
// 5
연속된 메모리 공간을 사용
정적 표현
인덱스를 통해 접근 가능
정적이므로 배열의 크기를 컴파일 이전에 정해주어야 함
컴파일 이후 배열의 크기를 변동 할 수 없음
리스트란
순서가 있는 데이터의 집합
불연속적으로 메모리 공간을 차지
동적 표현
인덱스가 없음
포인터를 통한 접근
메모리의 재사용 편리
포인터를 통해 다음 데이터를 가르키므로 추가적인 메모리 공간 발생
배열 리스트 차이점
배열 | 리스트 | |
데이터 검색 | 좋음 (인덱스를 통한 검색) | 나쁨 (포인터를 통해 순차적으로 검색) |
데이터 입력 | 나쁨 (인덱스를 전부 한칸씩 밀어야함) | 좋음 (앞과 뒤에 있는 포인터를 해당 노드에 연결) |
데이터 삭제 | 나쁨 (빈 메모리가 생김) | 좋음 (앞과 뒤에 있는 포인터를 연결 |
메모리 크기 | 정적 | 동적 |
배열과 리스트 사용
배열 : 데이터의 크기가 정해져 있고, 추가적인 삽입 삭제보다 검색이 많은 경우 유리
리스트 : 데이터의 크기가 정해져 있지 않고, 삽입 삭제가 많이 일어나며, 검색이 적은 경우 유리