*자료 구조 알고리즘을 공부하기에 앞서 알아야 할 것은 책으로 외우는 것은 전혀 쓸모가 없다는 것이다.
애초에 실행활에 도움을 주기 위해 발전한 영역이기 때문에 실제 어떻게 활용할 것인지 고민하면서 공부해야 학습하기 용이하다.
선형 구조 (Linear Structure)
선형 구조는 데이터 요소들이 일렬로 연결된 구조이다. 각 요소는 전후의 요소와 직접적으로 연결되어 있으며, 이런 연결은 순차적으로 이루어진다. 대표적인 선형 구조에는 다음과 같은 것들이 있다.
배열(Array)
: 고정된 크기의 연속된 메모리 블록으로 이루어진 데이터 구조이다. 각 요소는 인덱스를 통해 접근할 수 있다.
연결 리스트(Linked List)
: 각 요소가 다음 요소에 대한 포인터를 가지고 있는 구조이다. 단일 연결 리스트, 이중 연결 리스트 등이 있다.
스택(Stack)
: 후입선출(LIFO, Last In First Out) 방식으로 동작하는 구조이다. 요소는 한쪽 끝에서만 추가되거나 제거된다.
큐(Queue)
: 선입선출(FIFO, First In First Out) 방식으로 동작하는 구조이다. 요소는 한쪽 끝에서 추가되고 다른 쪽 끝에서 제거된다.
비선형 구조(Non-Linear Structure)
비선형 구조는 데이터 요소들이 계층적 또는 복잡한 방식으로 연결된 구조이다. 데이터 요소 간의 관계가 일대다 또는 다대다로 나타날 수 있다. 대표적인 비선형 구조에는 트리와 그래프가 있다
트리 (Tree): 루트 노드와 자식 노드로 구성된 계층적 구조이다. 이진 트리, 힙 등이 포함된다.
그래프 (Graph): 정점(Vertex)과 정점 간의 연결선(Edge)으로 구성된 구조이다. 방향 그래프, 무방향 그래프, 가중 그래프 등이 포함된다.
비교
선형 구조는 데이터 요소들이 순차적으로 연결되어 있어 탐색이나 순회가 간단하지만, 삽입이나 삭제 작업이 비효율 적일 수 있다.
비선형 구조는 데이터 요소들 간의 관계가 복잡하여 보다 효율적인 탐색, 삽입, 삭제가 가능할 수 있지만 이해가 어렵고 구현이 복잡하다.
'C# 자료구조, 알고리즘, 길찾기 > 개론' 카테고리의 다른 글
c# 인터페이스 (0) | 2023.09.04 |
---|---|
Big-O 표기법과 알고리즘의 스피드 (1) | 2023.01.04 |