학습하면서 다음 웹페이지를 참조하였습니다.
https://rottk.tistory.com/entry/자료구조와-추상자료형
https://helloworld-88.tistory.com/82
https://wikidocs.net/68
데이터: 0과 1로 구성된 ‘나열’
값: 컴파일러/인터프리터 언어가 이진수로 된 데이터를 해석한 결과
자료형 (Data Type)
정의:
이진수로 된 데이터가 가질 수 있는 특정한 ‘값’들과, 그 값들로 할 수 있는 연산들의 ‘집합’ 을 자료형 이라고 한다.
- 예) 정수 자료형: …-1,0,1,… 로 구성된 값들을 갖고 있고, 덧셈, 뺄셈, 곱셈, 나눗셈 등의 사칙연산으로 구성된 ‘집합’
특징:
- 연산들은 아직 구체적으로 구현되지 않았다.
- 따라서 자료형은 추상화 된 개념이다.
- 프로그래밍 언어와 독립적으로 존재한다.
- 어떤 데이터에 사람이 자료형을 부여할 수도 있고, 프로그래밍 언어가 알아서 부여하기도 한다.
역할:
컴파일러/인터프리터 언어가 데이터를 어떻게 해석하면 되는지 알려주는 ‘지침’
- 이 지침이 뭐냐에 따라 데이터는 다르게 해석된다.
- 이 지침은 데이터가 어떤 ‘값’을 가질 수 있고, 그 값들로 어떤 연산을 할 수 있는지 규정한다.
자료형 종류:
- 원시자료형: 불리언, 정수, 실수, 문자 등
- 복합자료형: 원시형 또는 복합자료형의 조합 (배열, 문자열 등)
- 추상자료형: 주어진 어떤 값으로 할 수 있는 ‘연산들로만 구성된 집합’.
추상자료형은 값 말고 연산들로만 구성된 집합이다. 보통 어떤 값이 주어져도 상관없다.
추상자료구조
- 추상자료형에 더해 각 연산의 시간복잡도까지 정의하면, 추상자료구조라고 한다.
- 추상자료형과 마찬가지로, 각 연산의 실제 구현방법은 정의하지 않는다.
자료구조
[이미지 출처 : https://helloworld-88.tistory.com/82 ]
정의:
자료형을 특정한 프로그래밍 언어로 ‘구현’ 한 것.
$\Rightarrow$ 자료형의 연산이 모두 구체적 알고리듬으로 구현된 ‘클래스’ 의 느낌이다.
$\Rightarrow$ 프로그래밍 언어로 짜여진 세계에서, 사실상 자료형 $=$ 자료구조다.
원시자료형을 구현한 예)
-
원시자료형(정수): …0,1,2,3… 등의 값을 갖고, 덧셈.뺄셈.곱셈.나눗셈 등 연산을 갖는 집합
-
자료구조(Char): 자료를 이진수로 나타내며, -128~127 사이 정수 값을 갖고, +, -, *, / 같은 연산을 구현한다.
추상자료형을 구현한 예)
‘데이터를 조직하고 담는 틀’ 로서 기능한다.
- 선형자료구조: 스택, 큐, 덱
- 비선형자료구조: 그래프, 트리, 힙 등