자료구조란?
자료구조(data structure)는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다
- 위키 백과
자료구조는 데이터 값을 모임, 데이터간의 관계, 데이터에 적용할 수 있는 함수나 명령을 의미합니다.
문제해결을 위해 여러 형태의 자료구조가 활용이 되며, 이에 따라서 다양한 알고리즘이 사용이 됩니다.
자료구조가 필요한 이유
데이터를 효율적으로 저장하고 관리해서 메모리를 효율적으로 사용하기 위해서 입니다.
자료구조를 적절하게 사용하게 된다면, 메모리의 사용을 줄일수 있고, 실행시간도 단축시킬수 있습니다.
자료 구조의 선택 기준
적은 양의 데이터를 처리할 때는 어떤 자료구조를 사용해도 큰 차이가 없으나, 대량의 데이터 처리에서는 자료구조에 따라서 효율성의 차이가 크게 나게 됩니다.
자료구조를 선택할 때 기준은 다음과 같습니다.
- 자료의 처리 기간
- 자료의 크기
- 자료의 활용 빈도
- 자료의 갱신 정도
- 프로그램의 용이성
자료구조의 특징
- 효율성 : 자료구조를 사용하는 목적 및 상황에 맞게 자료구조를 선택하여 사용한다면, 업무의 효율이 올라갑니다.
- 추상화 : 데이터를 처리할 떄는 복잡한 자료구조의 내부 구현이 어떻게 되어 있는지는 크게 중요하지 않고, 핵심적인 개념과 기능등 어떻게 사용하는지 해당 인터페이스를 알면 됩니다.
- 재사용성 : 다양한 프로그램에서 동작할 수 있도록 범용성 있게 설계합니다.
자료구조의 종류
단순 구조
True/False, 정수, 실수, 문자 및 문자열과 같이 컴퓨터가 기본적으로 제공해 주는 자료형
- 2진수, 정수, 실수, 문자, 문자열
선형 구조
데이터를 순차적으로 나열 시킨 형태이며, 자료들 간의 관계가 1:1인 자료입니다.
- 배열(Array) : 가장 일반적인 구조이며, 메모리 상에 같은 타입의 자료가 연속적으로 저장됩니다.자료값을 나타내는 가장 작은 단위가 자료를 다루는 단위 입니다.
- 연결 리스트(Linked List) : 연결 리스트는 동적 데이터 구조이며, 목록의 노드 수는 고정되어 있지 않으며 필요에 따라 늘리거나 줄일 수 있습니다. 노드가 아무것도 가리키지 않으면 리스트의 끝입니다.
- 덱(Deque) : 양쪽에서 넣기와 빼기를 할 수 있는 일반화된 선형구조입니다.
- 스택(Stack) : 먼저 저장된 것이 꺼내어 쓸 떄는 가장 나중에 나오게 되며, 가장 최근에 저장된 것이 꺼내어 쓸때는 제일 먼저 나오게 됩니다.
- 큐(Queue) : 대기줄과 같이 먼저 온 사람이 먼저 들어가는 선입선출 구조를 가지고 있습니다.
비선형 구조
하나의 자료 뒤에 여러개의 자료가 존재할 수 있습니다.
계층 구조나 망 구조를 가지는 자료구조이며, 트리와 그래프가 있습니다.
- 트리(Tree) : 그래프의 한 종류로, 루트 노드에서 시작하여 자식 노드와 부모 노드의 관계를 가지는 비선형 자료구조입니다. 부모 노드밑에 여러 자식 노드가 있고, 자식 노드가 다시 부모노드가 되어 각각의 자식노드에게 연결되는 재귀적인 형식의 자료구조입니다.
- 그래프(Graph) : 정점과 간선으로 이루어진 자료구조로, 노드와 간선을 통해 이루어진 모델입니다. 두 개의 노드를 연결하는 간선은 방향성이 있을 수도 있고, 없을 수도 있습니다.
Reference
https://afteracademy.com/blog/introduction-to-data-structure
반응형