공부중

[자료구조] 리스트(List) - 3 본문

Programing/자료구조

[자료구조] 리스트(List) - 3

곤란 2013. 1. 2. 10:52
반응형

 

앞 글 에서도 보았듯이

 

배열 기반의 리스트의 특징은 다음과 같다.

 

  • 데이터의 참조가 쉽다 – 인덱스 값을 기준으로 어디든지 한번에 참조 가능
  • 배열의 길이는 초기에 결정 되어야 한다. – 프로그램 실행 도중 크기 변경이 불가능 하다.
  • 삭제의 과정에서 데이터의 이동 및 복사가 자주 일어난다 – 삭제하고 빈 곳을 없애기 위한 정렬

 

그리고 실수로 일어날 크나큰 문제는 다음 소스코드를 보자.

 

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

배열의 인덱스를 잘못 사용하여 일어날수 있는 실수이다.

 

 

여기서 나타나는 배열의 단점은 다음과 같다.

배열은 메모리 특성이 정적이므로 프로그램 실행 후 자연스럽게 배열의 크기 조절이 불가능하다.

 

그렇다면 이것에 대한 해결방법은 뭐가 있을까??

 

문제는 정적인 배열이 필요로 하는 메모리의 크기에 바로 바로 대처가 불가능하므로

동적인 메모리의 구성으로 작성 하면 어떠할까??

반응형