배열(Array)
배열은 정적 자료구조이며 배열을 생성할 때 크기를 미리 정해놓고 해당 크기 만큼의 연속된 메모리 공간을 할당받는 것을 의미합니다. 이런 특성으로 배열은 컴퓨터 메모리에서도 데이터를 연속적으로 저장할 수 있습니다.
이렇게 연속된 메모리 주소를 할당받는 배열은 각 데이터에 대한 인덱스를 갖게 되며 배열의 각 요소는 해당 요소의 인덱스를 통해 직접 접근할 수 있습니다.
예를 들어 보면 array[0], array[1], array[2], array[3]....와 같이 인덱스를 사용하여 배열의 요소에 접근할 수 있습니다. 이걸 배열의 장점 중 하나인 임의 접근을 의미합니다. 그러나 배열은 한 번 크기를 정하면 수정이 불가능합니다. 따라서 배열은 크기를 동적으로 조잘할 수 없는 단점이 있습니다. 이런 특성으로 배열은 접근과 탐색에 용이하며, 요소의 순서가 중요한 경우에 유용합니다. 그러나 데이터의 삽입, 삭제, 크기 조절 등의 작업이 빈번하게 발생하는 경우에는 다른 자료구조를 사용하는 것이 적합합니다.
배열 장점
임의 접근으로 연속적으로 저장되어 있어 인덱스를 사용하여 임의의 위치에 빠르게 접근할 수 있으며 데이터를 검색하거나 읽는 데에 효율적입니다.
단점
배열을 생성할 때 크기를 미리 정해놓기 때문에 크기를 동적으로 조절할 수 없습니다. 또한 배열은 크기를 미리 정해놓기 때문에 실제로 사용되지 않는 공간도 메모리에 할당되어 있을 수 있습니다. 따라서 요소의 개수가 적을 때에도 고정된 크기의 메모리를 사용하므로 메모리가 낭비할 수 있습니다.
연결 리스트(Linked List)
동적 구조 자료이며 크기를 미리 정할 필요가 없습니다. 연속된 메모리 공간을 할당받지 않고, 대신 각각의 요소를 나타내는 노드들이 서로 연결되어 구성됩니다. 각 노드는 데이터를 저장하는 공간과 다음 노드를 가리키는 포인터로 구성됩니다. 따라 첫 번째 노드에서부터 시작하여 다음 노드를 순차적으로 찾아가면 연결 리스트의 전체 데이터를 탐색할 수 있습니다.
연결리스트 장점
크기 제한이 없기 때문에 연결 리스트는 동적으로 ㅋ크기가 조절될 수 있기 때문에 데이터의 주가 및 삭제가 용이하며 크기를 미리 정하지 않기 때문에 필요에 따라 데이터를 자유롭게 추가하거나 삭제 가능합니다.
삽입 및 삭제가 효율적이며 특정 위치에 데이터를 사입하거나 삭제할 때, 해당 위치의 이전 노드와 다음 노드의 링크만 변경하면 되므로 상수 기간에 삽입 및 삭제가 가능합니다.
단점
연결 리스트는 각 노드가 연결되어 있기 때문에 임의의 접근이 불가능하고 원하는 위치의 요소에 직접 접근하려면 처음부터 순차적으로 탐색해야 합니다.
※ 간략 설명
배열은 연속된 메모리에 데이터를 저장하며 빠른 접근이 가능하지만, 크기가 고정되어 있어 삽입, 삭제가 비효율적이고
링크드 리스트는 각 노드가 데이터와 다음 노드를 가리키는 포인터로 이루어져 메모리에 임의의 위치에 할당되며, 삽입 및 사제가 효율적이지만 접근이 느립니다.
'컴퓨터구조' 카테고리의 다른 글
스택, 큐 (0) | 2024.02.13 |
---|---|
컴퓨터 구조 (소스코드, 명령어) (0) | 2023.10.01 |
컴퓨터 구조(0,1숫자 문자표현) (0) | 2023.08.16 |