데이터 값의 모임, 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것
자료를 구성하는 가장 기본적인 단위.
수학의 int에 해당하는 단위
단, 수학에서 다루는 ‘정수’ 범위와 달리, 유한한 범위를 갖습니다.
유한한 범위는 프로그래밍 언어에 따라 약간씩 다릅니다.
수학의 ‘실수’에 해당하는 단위.
실수 범위에는 유리수(rational number)와 무리수(irrational number)
단, 정수형과 마찬가지로 컴퓨터에서는 표현 범위가 한정적이므로,
정확한 소수점 아래 값을 나타낼 수 없습니다.
따라서, 소수점 몇 번째 자리까지 정확히 나타낼 수 있는지가
실수형의 범위.
문자는 말 그대로 하나의 문자를 뜻합니다. 이 때 문자는 a, T, ^ 와 같이 보이는 문자 뿐만 아니라
띄어쓰기, tab, enter와 같은 공백문자(white space)도 포함.
포인터는 Integer나 Float, Character 처럼
그 자체로 정수, 실수, 문자처럼 의미있는 값을 갖지 않습니다.
대신에 자료형이 컴퓨터 메모리 내에서 저장된 곳,
즉, 메모리 내의 주소를 통해 자료형의 실제 값을 불러낼 수 있다.
동일한 타입의 데이터들을 저장하며, 고정된 크기를 가지고 있다.
인덱싱이 되어 있어 인덱스 번호로 데이터에 접근할 수 있다.
각 데이터 시퀀스가 순서를 가지고 연결된 순차적 구조
동적인 데이터 추가/삭제에 유리하다.
- 각 요소는 Node
- 각 Node에는 key와 다음 노드를 가리키는 포인터인 next가 포함
- 첫 번째 요소는 Head
- 마지막 요소는 Tail
→ Alt + Tab을 사용하여 프로그램 간 전환
→ 갤러리
사실 위 배열과 연결 리스트는 아래의 자료 구조들을 구현하는 데 사용되는 기본 자료 구조들이다.
순서가 보존되는 선형 데이터 구조
가장 마지막 요소(가장 최근 요소)부터 처리하는 LIFO (Last In First Out)
→ 실행 취소
→ 수학적 표현식을 구문 분석하고 평가
→ 재귀 프로그래밍에서 함수 호출을 구현
가장 먼저 입력된 요소를 처리하는 FIFO (First In First Out)
→ 멀티스레딩에서 스레드를 관리
→ 대기열 시스템
→ 소셜 미디어 네트워크를 나타내는 데 사용
→ 검색 엔진에 의해 웹 페이지 및 링크를 나타내는 데 사용
→ GPS에서 위치와 경로를 나타내는 데 사용
→ Binary Trees(이진트리)
→ Binary Search Tree(이진 검색 트리)
→ Heap(힙)
→ 데이터베이스 인덱스 구현
→ 사용자 로그인 인증
→ "set" 데이터 구조 구현
보통 테이블 내에 더 작은 서브그룹인 버킷(bucket)에 키/값(key/value) 쌍(pair)을 저장한다.
단, 충돌이 자주 일어날 수 있으며 이를 위해 다양한 방법으로 해시 함수를 개선하거나 해시 테이블의 구조 개선(chaining, open addressing 등)의 방법이 사용된다.
Binary Tree(이진트리)
최소 힙 : 부모의 키 값이 자식의 키 값보다 작거나 같다.
=> 루트 노드의 키 값이 트리의 최솟값
최대 힙: 부모의 키 값이 자식의 키 값보다 크거나 같다.
=> 루트 노드의 키 값이 트리의 최댓값
→ 힙 정렬 알고리즘
→ 우선순위 큐
References