ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 배열(Array)과 연결 리스트 (Linked List)
    자료구조 및 알고리즘/선형구조 2023. 11. 21. 16:47

    1. 자료구조의 분류

    • 단순구조:
      • 단순히 데이터를 저장하고 관리.
    • 비단순구조:
      • 데이터 간의 관계를 표현하며, 선형구조비선형구조로 나뉨.
      • 선형구조: 데이터가 순차적으로 나열되는 구조
        • 예시 : 배열, 연결리스트. 스택, 큐, 덱(DQueue), 
      • 비선형 구조: 데이터가 순차적으로 나열되지 않는 구조
        • 예시 : 트리, 그래프, 집합, 해시맵, 해시테이블, 

     

    2. 배열 (Array)

    2.1 배열의 정의와 특징

    • 정의:
      • 동일한 데이터 타입의 데이터를 연속적인 메모리에 저장.
      • 물리적 순서논리적 순서가 동일.
    배열의 구조
    • 2.2 배열의 장점
      • 빠른 접근:
        • 데이터의 위치를 알고 있다면, 인덱스를 통해 즉시 접근 가능 (시간복잡도: O(1))
    배열의 접근

    2.3 배열의 단점

    • 삽입과 삭제 속도 저하:
      • 데이터 삽입/삭제 시, 배열을 재생성하고 데이터를 복사해야 함.
      • 시간 소요가 크며, 메모리 소모도 많음 (시간복잡도: O(n)).
    배열의 삽입 과정

    3. 연결리스트 (Linked List)

    3.1 연결리스트의 정의와 특징

    • 정의:
      • 노드(Node)를 기본 단위로, 데이터를 저장하고 다음 노드의 참조값(Pointer)을 연결하는 구조.
    • 특징:
      • 고정된 크기가 없으며, 연속된 메모리를 사용하지 않음.
      • 데이터 삽입/삭제 시, 노드의 참조값만 변경.
    연결리스트 구조

    3.2 연결리스트의 장점

    • 삽입과 삭제가 빠름:데이터 이동 없이, 참조값만 변경 (시간복잡도: O(1)).

     

    3.3 연결리스트의 단점

    • 메모리 소모:
      • 데이터와 참조값을 저장하기 위한 추가 메모리 필요.
    • 데이터 접근 속도 저하:
      • 참조값을 따라가야 하므로, 데이터 접근 시간이 길어짐 (시간복잡도: O(n)).     


    4. 연결리스트의 종류

    • 단일 연결 리스트:
      • 각 노드가 다음 노드만 참조.
    • 이중 연결 리스트:
      • 각 노드가 이전 노드와 다음 노드를 참조.
    • 원형 연결 리스트:
      • 마지막 노드가 첫 번째 노드를 참조하여 원형 구조 형성.
    연결리스트 이미지화

    5. 배열과 연결리스트 비교


    종류 배열 연결리스트
    크기 고정 동적
    메모리 주소 연속 불연속
    데이터 접근 시간 O(1) O(n)
    삽입/삭제 시간 O(n) O(1)

    6. 포인트

    • 데이터 접근 시간에 대한 시간복잡도에 대해서 작성된 값은 탐색이 아닌 접근의 관점에서 계산한 부분
    • 즉, 해당 데이터가 어디 있는지를 알고 접근한다고 가정한 결과
    • 배열은 복도가 있는 호텔 방들이라 생각하면 됨. [401호라고 하면, 바로 401호로 들어가면 됨]
    • 연결리스트는 기차 칸이라 생각하면 쉬움 [1호차에서 5호차로 가기위해선, 2/3/4호차를 거쳐서 가야함]
    • 배열의 접근 시간 복잡도 : O(1):
    • 연결리스트의 시간 복잡도 : O(n)

    7. 결론

    • 배열: 데이터 접근이 빠르며, 크기가 고정된 데이터를 다룰 때 적합.
    • 연결리스트: 삽입/삭제 연산이 잦고, 데이터 크기를 사전에 알 수 없는 경우 적합.
    • 선택 기준
      • 데이터의 특성과 사용 목적에 따라 적합한 자료구조를 선택해야 함.
      • 예: 배열은 접근 중심, 연결리스트는 삽입/삭제 중심의 작업에 유리.

Designed by Tistory.