✅자료구조의 분류

추상 데이터 타입(Abstract Data Type)은 자료구조를 설명하는 데이터의 타입을 말하며, 자료구조는 추상 데이터 타입을 실제로 구현한 결과를 말합니다. 

자료구조의 분류.png|475

예를 들어 추상 데이터 타입인 리스트는 각 요소의 위치가 다른 요소에 의해 상대적으로 정해지는 데이터 타입으로, 요소를 추가하거나 제거하는 동작 역시 포함합니다. 반면 파이썬 리스트는 추상 데이터 타입을 실제로 구현한 자료구조입니다. 파이썬에서는 추상 데이터 타입인 리스트를 기반으로 파이썬 리스트와는 완전히 다른 자료구조를 만들 수 있습니다.

자료구조의 종류.png|475

자료구조는 선형과 비선형 등의 여러 속성을 기반으로 분류할 수 있습니다. 선형 자료구조(Linear Data Structure)는 데이터 요소를 순서대로 정렬하며, 비선형 자료구조(Nonlinear Data Structure)는 데이터를 비연속적으로 연결합니다. 예를 들어 파이썬의 리스트는 각 요소의 앞과 뒤에 다른 요소가 있는 선형 자료구조인 반면, 그래프는 각 요소가 다른 여러 요소와 연결될 수 있는 비선형 자료 구조입니다.

자료구조를 순회(Traverse)한다는 말은 자료구조의 첫 번째 요소에서 출발해 마지막 요소로 이동한다는 뜻입니다. 선형 자료구조에서는 첫 번째 요소에서 마지막 요소까지 백트래킹(Backtracking)없이 쉽게 순회할 수 있지만, 비선형 자료구조에서는 종종 되돌아가야 합니다. 

비선형 자료구조에서는 원하는 요소에 접근하기 위해 백트래킹이나 재귀가 필요한 경우가 많기 때문에 개별 요소에 접근하는 작업에는 선형 자료구조가 더 효율적입니다. 또한 선형 자료구조는 데이터를 쉽게 순회할 수 있어 비선형 자료구조에 비해 요소 전체를 변경하는 작업이 쉽고, 백트래킹 없이 모든 요소에 접근할 수 있어 자료구조를 설계하고 사용하는 것도 더 쉽습니다. 그러나 비선형 자료구조는 특정한 몇 가지 문제에 대해 더 효율적인 방법일 수 있습니다. 예를 들어 소셜 네트워크의 연결과 같은 데이터는 선형 자료구조로 저장하기에는 비효율적이고, 비선형 자료구조가 더 알맞습니다.

배열, 스택, 링크드 리스트, 큐.png|625

트리, 그래프.png|625