공부중
[자료구조] 리스트(List) - 3 본문
앞 글 에서도 보았듯이
배열 기반의 리스트의 특징은 다음과 같다.
- 데이터의 참조가 쉽다 – 인덱스 값을 기준으로 어디든지 한번에 참조 가능
- 배열의 길이는 초기에 결정 되어야 한다. – 프로그램 실행 도중 크기 변경이 불가능 하다.
- 삭제의 과정에서 데이터의 이동 및 복사가 자주 일어난다 – 삭제하고 빈 곳을 없애기 위한 정렬
그리고 실수로 일어날 크나큰 문제는 다음 소스코드를 보자.
main.cpp |
#include <iostream>
const int MAX_ARRAY = 5;
int main() {
int nTestArray[MAX_ARRAY] = {0};
static int nCount = 0; int nGetNUM = 0;
std::cout<<"int 형 배열 5개 생성 완료"<<std::endl;
while(true) { std::cout<<"넣고 싶은 숫자를 넣어주세요"<<std::endl; std::cout<<"그만 넣고 싶을 경우 0보다 작은 수를 입력하시면 됩니다."<<std::endl; std::cin>>nGetNUM;
if( 0 > nGetNUM ) { break; } else { nTestArray[nCount++] = nGetNUM; } }
for (int nPrintCount = 0; nPrintCount < nCount; nPrintCount++) { std::cout<<nTestArray[nPrintCount]<<std::endl; } } |
실행 결과 1
아무런 이상이 없다.
하지만 다음 실행 결과는 어떨까?
실행 결과 2
배열의 인덱스를 잘못 사용하여 일어날수 있는 실수이다.
여기서 나타나는 배열의 단점은 다음과 같다.
배열은 메모리 특성이 정적이므로 프로그램 실행 후 자연스럽게 배열의 크기 조절이 불가능하다.
그렇다면 이것에 대한 해결방법은 뭐가 있을까??
문제는 정적인 배열이 필요로 하는 메모리의 크기에 바로 바로 대처가 불가능하므로
동적인 메모리의 구성으로 작성 하면 어떠할까??
'Programing > 자료구조' 카테고리의 다른 글
[자료구조] 리스트(List) - 5 (0) | 2013.01.02 |
---|---|
[자료구조]리스트(List) - 4 (0) | 2013.01.02 |
[자료구조] 리스트(List) - 2 (0) | 2012.12.28 |
[자료구조] 리스트(List) - 1 (0) | 2012.12.17 |
[자료구조] 자료구조가 뭐에용?? (0) | 2012.12.13 |