yongckim/[DataStructure]Array List - 1

Created Mon, 22 Nov 2021 21:29:00 +0900 Modified Mon, 22 Nov 2021 22:12:54 +0900
658 Words

배열 (Array)

먼저 Array List에 대해 알아보기 전에 배열(Array)에 대해 알아봅시다.

배열은 여러개의 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 방법입니다.

배열을 이용하면 하나의 변수에 여러 정보를 담을 수 있고, 반복문과 결합하면 많은 정보도 효율적으로 처리할 수 있습니다.

배열의 특징

  • 크기가 정해져 있습니다.

  • 인덱스를 통하여 해당 위치에 존재하는 값에 접근할 수 있습니다.

  • 배열은 연속된 메모리의 공간으로 이루어져 있습니다.

배열의 한계

배열은 길이가 정해져 있기 때문에 메모리 공간의 낭비가 생길 수 있습니다.

예를들어, 다음과 같은 배열이 있다고 가정해봅시다.

int a[5] = {1, 2, 3, 4, 5};

여기서 2번 인덱스(3)의 값을 지우고 싶을 때 다음과 같은 형태로 값을 지울 수 있을 것입니다.

a[2] = NULL;

하지만 해당 인덱스의 값을 다음과 같이 하더라도 메모리에는 해당 공간을 점유하고 있습니다.

이런 상황을 피하기 위해서는 리스트 자료구조를 사용해서 해결해야 합니다.

리스트(list)

배열은 해당하는 값의 인덱스를 알고 있으면 인덱스를 이용해서 데이터를 빠르게 조회할 수 있었지만 낭비되는 공간이 존재할 수 있다는 단점이 있었습니다.

리스트는 배열이 가지고 있는 인덱스라는 장점을 버리고 대신 빈틈없는 데이터의 적재를 위한 자료구조입니다.

리스트의 특징

리스트는 순서가 있는 엘리먼트의 모임으로 빈 엘리먼트는 허용되지 않습니다.

리스트에서 값을 추가하면 해당 위치에 존재하는 값을 뒤로 밀어내고 해당 위치에 값이 들어갑니다.

1 2 3 4 // 1번째 위치에 5를 추가
1 5 2 3 4 // 2 3 4가 뒤로 밀려남

리스트에서 값을 삭제하면 해당 위치 이후에 있는 값을 앞으로 땡겨옵니다.

1 2 3 4 // 1번째 위치의 값을 삭제
1 3 4 // 3 4를 앞으로 땡겨옴