[CS/자료구조] 배열, 연결리스트

cs자료구조
avatar
2025.03.20
·
4 min read

배열 Array

  • 일정한 메모리 공간을 차지하는 여러 요소들이 순차적으로 나열된 자료구조

    • 선언 시 크기를 반드시 지정해야 한다.

  • 각 요소에는 0부터 시작하는 고유한 순서 번호인 인덱스(index) 가 매겨진다.

시간복잡도

  • 인덱스를 바탕으로 배열의 특정 요소에 접근하는 시간 : O(1)

  • 인덱스를 바탕으로 특정 요소를 수정하는 시간 : O(1)

  • N개의 데이터에서 앞부터 차례대로 특정 요소가 있는지를 찾는 연산 시간 : O(N)

  • 특정 요소를 추가하거나 삭제하는 연산 시간 : O(N)

    • 중간에 추가 또는 삭제된 요소르 인해 이후의 요소들이 이동 및 재정렬되기 때문

연결리스트 Linked List

  • 노드의 모음으로 구성된 자료구조

    • 노드 = 저장하고자 하는 데이터 + 다음 노드의 위치 (메모리 상의 주소)

  • 모든 노드들이 한 쪽 방향으로 꼬리에 꼬리를 무는 형태로 구성

  • 연속적으로 구성되어 있는 데이터를 불연속적으로 저장할 때 유용

시간복잡도

  • 특정 요소에 접근할 때는 앞에서부터 순차적으로 접근 : O(n)

  • 새로운 노드를 삽입 또는 삭제할 때 연산 시간 : O(1)

종류

1. 싱글 연결 리스트 (Singly linked list)

4183
  • 탐색은 단방향으로만 가능하다.

  • 특정 노드를 통해 다음 노드의 위치만 알 수 있고, 이전 노드의 위치는 알기 어렵다.

2. 이중 연결 리스트 (Doubly linked list)

4184
  • 노드 내에 다음 노드의 위치 정보뿐만 아니라 이전 노드의 위치 정보도 포함하고 있다.

  • 싱글 연결 리스트와 달리 양방향 탐색도 가능하다.

  • 한 노드에 2개의 위치 정보(메모리 주소)를 저장해야 하므로 그만큼의 저장 공간이 더 필요하다.

3. 환형 연결 리스트 (Circula linked list)

4185
  • 꼬리 노드가 헤드 노드를 가리켜 노드들이 원형으로 구성된 연결 리스트

  • 모든 노드 데이터를 여러 차례 순회해야 할 때 유용하게 활용할 수 있다.







- 컬렉션 아티클