2022. 2. 4. 20:42ㆍ자료구조 Data Structure
자료구조(資料構造)란 무엇일까
자료구조를 영어로 하면 Data Structure이다. 자료=데이터들의 구조라는 느낌인데...
위키피디아에서는 컴퓨터 분야에서의 자료구조를 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령이라고 정의한다(https://ko.wikipedia.org/wiki/%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0)
나는 자료구조란 데이터를 효율적으로 표현하고 저장하기 위한 데이터들의 논리적인 구조와 처리 방법이라고 배웠다.
책으로 비유하자면 자료구조란 책들을 어떻게 분류하여 정리할 것인지이고 알고리즘은 이 책 중 한권을 찾기위해 분류해놓은 책들 중 어느지점에서부터 책을 찾을지 특정 지점에서 책을 찾지 못했을 때 바로 옆에 있는 책을 볼지 반대편의 책을 볼지 등의 행동이라고 볼 수 있다.
자료구조를 왜 공부해야하는 걸까?
답은 간단하다. 자료구조를 사용하는 프로그램이 자료구조를 사용하지 않는 프로그램보다 효율적이기 때문이다.
책을 분류한다고 치면 장르와 주제에 관계없이 모든 종류의 책을 모아둔 책장보다 장르와 주제에 따라 분류해놓은 책장에서 원하는 책을 찾는 것이 훨씬 빠를 것이다. 데이터도 마찬가지라고 볼 수 있다. 데이터를 모아서 분류하고 분류해놓은 스타일에 따라 원하는 데이터를 삭제, 삽입, 추가 등을 할 때 데이터 구조에 따른 방법을 선택하면 데이터를 다루는 연산의 복잡도를 효율적으로 관리할 수 있다.
자료구조의 분류
자료구조는 그림과 같이 분류할 수 있다.
단순 구조는 프로그래밍 언어에서 배운 데이터 타입에 해당하고 구성은 아래와 같다.
- 정수
- 실수
- 문자
- 문자열
선형 구조는 데이터들의 앞과 뒤를 1:1로 고정시킨 구조로 아래와 같이 구성되어 있다
- 순차 리스트(linear list)
- 연결 리스트(linked list)
- 스택(stack)
- 큐(queue)
- 덱(deque)
비선형 구조는 데이터를 계층 혹은 망 구조로 아래와 같이 구성되어 있다.
- 트리(tree)
- 그래프(graph)
파일 구조는 서로 관련 있는 필드들로 구성된 레코드의 집합인 파일에 대한 자료구조로 아래와 같이 구성된다.
- 순차 파일
- 색인 파일
- 직접 파일
우리는 표현하고자하는 자료의 특성과 수행해야하는 연산 구현에 필요한 메모리 공간 등을 고려하여 가장 효율적인 자료구조를 선택해야 한다.
#왜 일반적인 자료구조의 분류에는 집합과 배열이 없는가??
'자료구조 Data Structure' 카테고리의 다른 글
[자료구조] 집합(Set) 개념 이해하기 (0) | 2022.02.11 |
---|---|
[자료구조] 배열(Array) 개념 이해하기 (0) | 2022.02.10 |
[자료구조] 연결 리스트(Linked List) 개념 이해하기 (0) | 2022.02.07 |
[자료구조] 선형 리스트(Linear List) 개념 이해하기 (0) | 2022.02.07 |
[자료구조] 자료의 표현 (0) | 2022.02.04 |