Non-Primitive

Linear Data Structure vs. Non-Linear Data Structure

데이터 구조는 크게 Linear Data Structure와 Non-Linear Data Structure로 나눌 수 있다.

측면Linear Data StructureNon-Linear Data Structure
정의데이터 요소가 순차적 또는 선형적으로 배열된 구조데이터 요소가 순차적이거나 선형적으로 배열되지 않은 구조
구조단일 레벨 구조다중 레벨 구조
데이터 관계요소 간 1:1 관계요소 간 1:N 또는 N:N 관계
순회단일 실행으로 모든 요소 순회 가능단일 실행으로 모든 요소 순회 불가능
구현 복잡성구현이 상대적으로 간단구현이 상대적으로 복잡
메모리 사용메모리 사용이 덜 효율적메모리 사용이 더 효율적
시간 복잡도입력 크기에 따라 증가특정 작업에서 더 효율적
데이터 접근순차적 접근계층적 또는 네트워크 기반 접근
삽입/삭제상대적으로 간단더 복잡하지만 유연함
응용 분야간단한 데이터 저장 및 처리복잡한 관계 표현, AI, 이미지 처리 등
예시배열, 연결 리스트, 스택, 큐트리, 그래프, 해시 테이블, 힙

공통점:

  1. 둘 다 데이터를 구조화하고 관리하는 방법을 제공한다.
  2. 특정 작업에 대해 효율적인 알고리즘을 지원한다.
  3. 데이터의 삽입, 삭제, 검색 연산을 수행할 수 있다.

주요 차이점:

  1. 데이터 배열 방식 (순차적 vs 계층적/네트워크)
  2. 구현 복잡도 (간단 vs 복잡)
  3. 메모리 효율성 (덜 효율적 vs 더 효율적)
  4. 데이터 관계 표현 (1:1 vs 1:N 또는 N:N)
  5. 응용 분야 (간단한 데이터 처리 vs 복잡한 관계 표현)

선형 데이터 구조 (Linear Data Structure) 유형

구조정의특징장점단점주요 연산
Array연속된 메모리 위치에 동일한 유형의 요소를 저장하는 구조- 고정 크기
- 인덱스로 접근
- 빠른 접근 시간 O(1)
- 메모리 효율적
- 크기 변경 어려움
- 삽입/삭제 비효율적
접근, 검색, 삽입, 삭제
Linked List노드가 데이터와 다음 노드 참조를 포함하는 연결 구조- 동적 크기
- 비연속 메모리
- 삽입/삭제 효율적
- 유연한 크기
- 임의 접근 어려움
- 추가 메모리 필요
삽입, 삭제, 순회
StackLIFO(Last-In-First-Out) 원칙을 따르는 구조- 한쪽 끝에서만 연산
- 후입선출
- 간단한 구현
- 역추적에 유용
- 제한된 데이터 접근push, pop, peek
QueueFIFO(First-In-First-Out) 원칙을 따르는 구조- 양쪽 끝에서 연산
- 선입선출
- 순서 보존
- 버퍼링에 유용
- 중간 데이터 접근 어려움enqueue, dequeue
Deque양쪽 끝에서 삽입과 삭제가 가능한 구조- 양방향 연산
- 스택과 큐 기능 결합
- 유연한 데이터 처리
- 다양한 알고리즘 지원
- 구현 복잡성pushFront, pushBack, popFront, popBack

비선형 데이터 구조 (Non-Linear Data Structure) 유형

구조정의특징장점단점주요 연산
Graph노드(정점)와 엣지(간선)로 구성된 비선형 데이터 구조- 계층적 또는 네트워크 관계 표현
- 방향성 있는/없는 그래프로 구분
- 복잡한 관계 모델링
- 효율적인 경로 탐색
- 구현 복잡성
- 메모리 사용량 큼
삽입, 삭제, 탐색, 순회
Hash-based Structure키를 값에 매핑하는 데이터 구조- 해시 함수 사용
- 충돌 해결 메커니즘 필요
- 빠른 검색, 삽입, 삭제 (평균 O(1))
- 효율적인 데이터 관리
- 최악의 경우 성능 저하
- 순서 정보 손실
삽입, 검색, 삭제
Tree계층적 구조를 가진 노드들의 집합- 루트 노드와 자식 노드로 구성
- 사이클 없음
- 계층적 데이터 표현
- 효율적인 검색
- 불균형 시 성능 저하
- 구현 복잡성
삽입, 삭제, 검색, 순회
Heap완전 이진 트리 기반의 특수한 트리 구조- 최대 힙 또는 최소 힙
- 부모-자식 간 대소 관계 유지
- 최대/최소값 빠른 접근
- 우선순위 큐 구현에 효과적
- 임의 노드 접근 어려움
- 중간값 찾기 비효율적
삽입, 삭제, 힙 정렬

Hash-based data structure가 Non-linear data structure로 분류되는 근거

  1. 고유한 접근 방식: Hash-based 구조는 해시 함수를 사용하여 데이터를 저장하고 검색한다. 이는 다른 non-linear 구조와는 다른 독특한 접근 방식이다.
  2. 성능 특성: Hash-based 구조는 평균적으로 O(1)의 시간 복잡도로 삽입, 검색, 삭제 연산을 수행할 수 있어, 다른 non-linear 구조와 구별된다.
  3. 다양한 응용: Hash-based 구조는 associative arrays, 데이터베이스 인덱싱, 캐시, 집합 등 다양한 응용 분야에서 사용된다.
  4. 충돌 해결 메커니즘: Hash-based 구조는 충돌 해결을 위한 고유한 메커니즘(예: separate chaining, linear probing)을 가지고 있어, 다른 non-linear 구조와 구별된다.
  5. 공간-시간 트레이드오프: Hash-based 구조는 메모리 사용과 연산 속도 사이의 특별한 균형을 제공한다.
  6. 확률적 성능: Hash-based 구조의 성능은 해시 함수의 품질과 충돌 해결 방법에 따라 확률적으로 결정되며, 이는 다른 non-linear 구조와 다른 특성이다.

참고 및 출처