[자료구조] 자료구조 이해 및 분류
자료구조와 알고리즘은 취업준비를 하다보면 흔히 보는 과목이다.
파이썬 같은 언어는 동적 타이핑을 사용해서 변수에 직접적인 데이터 타입을 명시하거나 하지는 않지만
파이썬 이전의 언어를 공부하다보면 자료구조의 중요성을 느끼기 쉽다.
또한 데이터 타입을 명시하지 않는다고 파이썬 개발자에게 자료구조에대한 공부가 필요없는 것은 아니다.
데이터 구조를 잘 파악하고 있다면 더 효율적인 코드를 작성하고 데이터를 더 잘 활용할 수 있다는 것이 명확하다.
< 자료구조 이해 및 분류 >
1. 자료구조 정의
: 컴퓨터과학에서 데이터를 구조적으로 표현하는 방식과 이를 구현하는 데 필요한 알고리즘에 대해 논하는 기초이론
=> 구체적으로 데이터 값의 모임, 데이터간의 관계, 데이터에 적용할 수 있는 함수나 명령을 의미
2. 자료구조의 분류
1) 단순 구조
· 가장 기본적인 데이터 타입을 가지는 자료구조
· 각각 단일 값을 가지며 복잡한 관계는 없음
- 종류
ㄴ 2진수
ㄴ 정수
ㄴ 실수
ㄴ 문자/문자열
2) 선형 구조
· 데이터 간의 관계가 1대1의 관계를 가지는 자료구조
· 데이터가 선처럼 일렬로 나열되어 정확히 하나의 선행자와 후속자를 가짐
=> 자료 저장과 불러오기에 중점
- 종류
ㄴ 선형 리스트(Linear List) : 연속적인 기억공간에 배정, 각 요소를 동일 데이터 타입으로 <인덱스,.값>의 쌍으로 표현 => ex) 배열 (array)
ㄴ 연결 리스트(Linked List) : 자료를 반드시 연속적으로 배열X, 임의의 기억공간에 배정, 자료항목의 순서에 따라 연결 => ex) List
ㄴ 덱 (deque) : double-ended queue, 양쪽 끝에서 삽입과 삭제가 모두 가능
ㄴ 스택(stack) : LIFO원칙(후입후출)에 따라 데이터 저장
ㄴ 큐 (Queue) : FIFO원칙(선입선출)에 따라 데이터 저장
(ㄴ> 자세한 설명은 다음 포스팅에서 )
3) 비선형 구조
· 비선형 구조는 데이터 간의 관계가 1 대 다 혹은 다 대 다의 관계를 가지는 자료구조
· 자료들 간의 앞뒤 관계가 1:n 또는 n:m의 관계
=> 자료의 표현에 중점
- 종류
ㄴ 트리 (Tree) : 1개 이상의 노드로 구성된 집합
ㄴ 그래프 (Graph) : 노드와 노드를 연결하는 간선을 하나로 모아 놓은 자료구조
4) 파일 구조
· 파일 : 고유한 이름을 갖는 것을 말하며, 관련된 정보 단위의 집합을 의미
· 파일 시스템 : 보조 기억 장치에 저장되어있는 파일들을 관리해주는 총체적인 기술 체계를 의미
· 파일구조 : 1) 파일에서의 데이터를 표현하는 방식
2) 데이터에 접근하는 연산에 관한 것을 다루는 학문
3) 파일을 구성하는 레코드들이 보조기억장치에 편성되는 방식
을 의미
- 종류
ㄴ 순차 파일 : 파일 내용이 하나의 긴 줄로 늘어선 형태로 저장되어 있어 순차 접근만 가능한 구조
ㄴ 색인 파일 : 1) 순차 파일과 직접 파일에서 지원하는 편성 방법이 결합된 형태
2) 색인(인덱스)을 이용한 순차적인 접근 방법을 제공하여 색인 순차 접근 방식
ㄴ 직접 파일 : 구성하는 레코드를 임의의 물리적 저장공간에 기록하는 것으로 직접 접근 방식