Data Structure : Introduction
자료구조(Data Structure)란?
자료구조(Data Structure)의 정의
사진출처: 인프런
Inflearn
“컴퓨터과학에서
데이터를 구조적으로 표현하는 방식
과이를 구현하는 데 필요한 알고리즘
“
- 컴퓨터의 메모리는 1차원 구조[1] 이기 때문에 현실 세계의 다차원 데이터를 다루기 위해서는 이것을 1차원인 선 형태로 바꾸는 것이 필요하다.
- 위와 같은 기초 알고리즘에는 2차원 배열 및 이진 트리, 그래프 등의 자료구조가 있다.
List, Stack, Queue, Circular Queues, Heap tree, Graph
정도의
대표적인 7가지 개념을 주축으로 포스팅 해보겠다.
자료형(Data Type)이란?
자료형(Data Type)이란?
용어 그대로
"자료(Data)의 종류"
이다. 한번쯤 코딩을 해보았다면 알 수 있을 것이다.
바로int(정수), double(실수), char(문자), str(문자열)
등등 프로그래밍 언어별로 많은 종류가 있다.
- 자료형을 사용할 때에는 실행 가능한 (executable) 연산인지 확인해야한다.
자료형(Data Type) 이 결정되면 그에 따라 해당 Data와 관련된 연산이 달라질 수 있기 때문이다.
- 복잡한 자료형을 구현할 때에는
데이터간의 연산이 함수(Function)로 작성된다.
(ex. Stack 자료형에서 새로운 값을 추가하는 연산은 add()라는 Function으로 정의된다.)
추상적자료형(Abstract Data Type)이란?
추상적자료형(ADT: Abstract Data Type)이란?
자료 자체의 형태와 그 자료에 관계된 연산들을 추상적, 수학적으로만 정의한 것.
추상적자료형(ADT)
은 데이터나 연산이무엇(what)
인지는 정의되지만,
어떻게(how)
컴퓨터 상에서 구현할 것인지는 정의되지 않는다.- EX. 자연수를 나타내는 추상적 자료형 중 Nat_Number 이 있다. Nat_Number의 연산 중 하나인 add() 는
Nat_Number add(x,y)
의 형태로 사용할 수 있다.여기서 추상화(Abstraction)란?
- 어떤 시스템의 간략화 된 기술 또는 명세로서,
System의 가장 핵심적인 구조나 동작에만 집중하는 것.
- 객체 지향 언어의 대표격인 Java를 학습해본 개발자라면 무슨 느낌인지 알 것이다.
Java의 class 개념과 일맥상통이라 볼 수 있다고 한다.
Nat_Number add(x,y)
- 연산의 이름 : add
- 매개변수 : x, y
- 반환형 : Nat_Number
와 같이 연산이 무엇인지(what) 정의할 수 있다.
하지만 어떻게(how) + 연산을 구현하는지에 대한 구체적인 코드는 주어지지 않는다.
이것이 추상적자료형(ADT)이다.
Data Structure Categories
1. 혼합 자료구조 (Composite Data Structure) - 배열 (Array)
2. 선형 자료구조 (Linear Data Structure) - - 배열 (Array) ---> 가변 길이 배열 (STL의 Vector) - 리스트 ---> 연결 리스트 (Linked List)
3. 추상적 자료구조 (Abstract Data Structure) - - 리스트 ---> 연결 리스트 (Linked List) - 스택 (Stack) - 큐 (Queue) ---> 환형 큐 (Circular Queues) - 트리 (Tree) ---> 트라이 (Trie) - 그래프 (Graph)
4. 딕셔너리 자료구조 (Dictionaries) - - 연관 배열 - Map (Associative array) - 연관 리스트 - 해시 테이블
참고: 나무위키
Data_Structure
참고: C언어로 쉽게 풀어쓴 자료구조 <개정 3판> 천인국, 공용해, 하상국 지음
Task Lists
[1] 하드웨어의 구조는 2차원 이지만, CPU가 인지하는 것에 있어 논리적 메모리 공간은 1차원임.
- 자료구조(Data Structure)란?
- 자료형(Data Type)이란?
- 추상적자료형(Abstract Data Type)이란?
Comments