[자료구조] 자료구조의 정의와 구조, 선형구조와 비선형구조의 차이, 알고리즘과의 관계
- 기타/자료구조
- 2018. 6. 18.
자료구조란?
자료구조의 정의를 알기전에 프로그램의 정의는 "프로그램이란 데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것이다." 이다. 여기서 말하는 데이터의 표현은 데이터의 저장을 포함하는 개념이고 데이터의 저장을 담당하는 것이 바로 자료구조이다.
넓은 의미에서 int형 변수도, 구조체의 정의도 자료구조에 속한다. 둘다 데이터의 표현 및 저장하는 하나의 방법이기 때문이다. 실제로 배워야할 자료구조는 이렇게 단순하지 않다. 자료구조는 기본적으로 다음과 같이 분류할 수 있다.
파일도 데이터를 저장하는 도구이기 떄문에 파일의 구조도 자료구조에 포함된다.
선형구조는 자료를 표현 및 저장하는 방식이 선형(linear)이고, 선형은 단어의 뜻 그대로 선의 형태로 이해하면 된다. 즉 선형 자료구조는 데이터를 선의 형태로 나란히 혹은 일렬로 저장하는 방식이다.
비선형 자료구조는, 데이터를 나란히 저장하지 않는 구조이다. 상대적으로 더 어렵다.
실무에서는 자료구조를 직접 구현하지 않고 검증된 라이브러리를 가져다 쓴다. 하지만 라이브러리를 잘 가져다 쓰려면 리스트가 무엇이고 트리가 무엇인지 알아야 한다. 그냥 아는 것이 아니라 각각의 특성을 정확히 이해해야 한다.
선택을 하려면 자료구조의 구현 능력이 그렇게 요구되는 것은 아니지만 코드 레벨에서 자료구조를 구현한 경험이 있다면 자료구조를 더 잘 알게 된다.
자료구조와 알고리즘
컴퓨터 프로그램은 알고리즘 + 자료구조의 형태로 이루어진다. 알고리즘이 특정한 목적을 달성하기 위한 절차라고 한다면 자료구조는 알고리즘에 필요한 데이터의 집합이다. 동일한 알고리즘 이라도 자료구조가 달라지면 전혀 다른 프로그램이 될 수 있기 때문에 알맞는 자료구조를 만드는 것이 매우 중요하다.
[배열 선언은 자료구조적 측면]
int a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; | cs |
[배열에 저장된 모든 값의 합을 더하는 알고리즘]
for (idx = 0; idx < 10; idx++) sum += arr[idx]; | cs |
자료구조와 알고리즘은 밀접한 관계를 갖는다. 자료구조가 결정되어야 그에 따른 효율적인 알고리즘을 결정할 수 있기 때문이다.
윤성우, 『윤성우의 열혈 자료구조』, ORANGE MEDIA
그림출처 : http://comfun.tistory.com/
'기타 > 자료구조' 카테고리의 다른 글
[자료구조] 큐(Queue), 스택(Stack) 구조와 Java에서 사용방법 (0) | 2022.01.09 |
---|---|
[Java 자료구조(배열)] 배열과 ArrayList 클래스 장단점과 사용방법 (0) | 2021.12.13 |
[자료구조] 트리(Tree)를 사용하는 이유와 특징 (0) | 2019.06.20 |