Etc

[자료구조] 자료구조(Data Structure)란?

개발기록자 2023. 4. 27.

자료구조는 컴퓨터 과학에서 매우 중요한 개념 중 하나입니다. 컴퓨터 과학에서 데이터를 저장하고 조작하는 방법을 이해하는 것은 프로그래머의 필수적인 능력입니다. 이 글에서는 자료구조의 개념과 특징, 분류에 대해 알아보겠습니다.


자료구조란?

자료구조는 컴퓨터 과학에서 데이터를 효율적으로 관리하게 하는 자료의 집합을 의미합니다. 각 원소들 사이의 관계가 논리적으로 정의되어 있으며, 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 조직적, 체계적으로 구분하여 표현한 것입니다.

 

1. 자료구조를 알야 하는 이유

자료구조는 데이터를 효율적으로 저장, 관리할 수 있게 해줍니다. 따라서 적절한 자료구조의 사용은 메모리를 효율적으로 사용하고 실행 시간을 단축시켜줄 수 있습니다. 이는 프로그램의 효율성을 높여주며, 대용량 데이터를 처리하는 경우에 중요한 역할을 합니다.

 

2. 자료구조의 특징

1) 효율성

적절한 자료구조는 데이터를 효율적으로 저장, 관리할 수 있습니다.

 

예를 들어, 배열과 연결 리스트는 둘 다 자료를 저장하는 자료구조입니다. 그러나 배열은 자료의 인덱스에 직접 접근하여 데이터를 검색할 수 있어 검색이 빠르지만, 삽입, 삭제를 수행할 때는 배열의 크기를 변경하고, 데이터를 옮겨야 하기 때문에 비효율적입니다. 반면 연결 리스트는 포인터를 이용하여 자료를 검색하므로 검색은 더 느리지만, 삽입, 삭제가 매우 용이하여 효율적입니다.

 

2) 추상화

자료구조의 내부 동작 방식에 대한 세부적인 내용을 숨기고, 추상적인 개념으로 정의하여 사용자가 쉽게 이해하고 사용할 수 있도록 합니다.

 

예를 들어, 스택(Stack) 자료구조는 데이터를 넣고 빼는 동작을 수행할 수 있는 자료구조입니다. 그러나 스택이 내부적으로는 배열이나 연결 리스트 등으로 구현되었다고 하더라도, 사용자는 그 구현 방식을 알 필요 없이 스택을 사용할 수 있습니다. 이는 스택이 추상화되어 있기 때문입니다. 사용자는 스택이 제공하는 push, pop 등의 메소드를 사용하여 데이터를 추가하고 삭제할 수 있습니다.

 

3) 재사용성

자료구조를 설계할 때는 특정 프로그램에서만 동작하게 설계하지 않습니다. 다양한 프로그램에서 동일한 자료구조를 사용할 수 있도록 범용성 있게 설계하기 때문에 새로운 프로그램을 만들 때 자료구조를 다시 설계하지 않아도 재사용할 수 있습니다.

 

3. 자료구조의 분류

자료구조는 크게 선형 구조, 비선형 구조, 파일 구조로 분류 할 수 있습니다.

 

1) 선형 구조

데이터를 일렬로 나열한 시킨 형태로, 데이터 간의 관계가 1:1로 매칭되는 구조입니다.

- 배열(Array) : 동일한 자료형을 가지는 데이터 요소들을 일정한 크기의 메모리 공간에 연속적으로 저장하는 자료구조

- 리스트(List) : 데이터 요소들을 노드라는 단위로 구성하여 노드가 다음 노드의 주소를 가리키는 방식으로 구현된 자료구조

- 스택(Stack) : 데이터 요소들을 선형적인 구조로 저장하되, 마지막으로 삽입한 데이터 요소가 가장 먼저 삭제되는 후입선출(LIFO) 방식으로 동작하는 자료구조입니다.

- 큐(Queue) : 데이터 요소들을 선형적인 구조로 저장하되, 먼저 삽입한 데이터 요소가 가장 먼저 삭제되는 선입선출(FIFO) 방식으로 동작하는 자료구조입니다.

- 덱(Deque) : 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조입니다. (Dobule Ended Queue의 약자로, 큐와 스택의 특성을 모두 가지고 있어 다양한 용도로 활용됩니다.)

 

2) 비선형 구조

데이터 간의 관계가 1:1이 아닌 1:N 또는 N:N으로 매칭되는 구조로, 복잡한 자료 구조입니다.

- 트리(Tree) : 노드들이 가지로 연결되어 부모-자식 관례의 계층 구조를 형성하는 자료구조입니다.

- 그래프(Graph) : 노드와 노드들을 연결하는 간선으로 구성된 자료구조입니다.

 

3) 파일 구조

데이터를 파일 형태로 저장하는 구조로, 서로 관련있는 필드로 구성된 레코드 집합인 파일에 대한 자료구조입니다.

- 순차 파일 : 논리적인 처리 순서에 따라 연속된 물리적 저장공간에 저장하는 방법입니다.

- 색인 파일 : 색인을 이용하여 순차적인 접근 방법을 제공하는 구조입니다.

- 직접 파일 : 레코드를 임의의 물리적 저장공간에 저장하는 방법입니다.

 


함께 보면 좋은 글

 

[자료구조] 스택(Stack)과 큐(Queue)

스택(Stack)과 큐(Queue)는 컴퓨터 과학에서 가장 기본적인 자료구조 중 하나로 프로그래밍에서 가장 많이 사용됩니다. 스택과 큐는 각각의 구조와 연산이 다르기 때문에, 효율적인 사용을 위해서

dev-records.tistory.com

 

'Etc' 카테고리의 다른 글

객체 지향 프로그래밍(OOP)이란?  (1) 2023.05.21
[자료구조] 스택(Stack)과 큐(Queue)  (0) 2023.04.28

댓글