티스토리 뷰
자료구조란 무엇인가?
"프로그램이란 데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것이다." 라는 말이 있는데 여기서 '데이터를 표현' 한다는 '데이터를 저장' 한다는 것을 포함하는 개념이다. 그리고 '데이터 저장'을 담당하는 것이 바로 자료구조라 한다.
넓은 의미에서 int형 변수도, 구조체의 정의도 자료형에 속한다. int형 변수도, 구조체도 데이터를 표현 및 저장하는 하나의 방법이기 때문이다. 뿐만 아니라 배열도 자료구조의 일종이다.
자료구조는 기본적으로 다음과 같이 분류할 수 있다.
위 그림에서 보이듯 파일도 데이터를 저장하는 도구이기 때문에 파일의 구조도(파일이 데이터를 저장하는 방식도) 자료구조에 포함이 된다. 하지만 보통 자료구조에서 다루는 것은 '선형 자료구조'와 '비선형 자료구조'이다.
선형 자료구조와 비선형 자료구조의 의미
선형 자료구조
비선형 자료구조
비선형 자료구조에는 트리, 그래프가 있다.
자료구조와 알고리즘
반면 배열에 저장된 모든 값의 합을 더하는 다음 반복문의 구성은 알고리즘적 측면의 코드이다.
1 2 | for(idx=0, idx,10; idx++) sum==arr[idx] | cs |
위의 반복문은 '배열에 저장된 모든 값의 합을 구하는 알고리즘'이라 할 수 있다. 이렇듯 자료구조와 알고리즘은 밀접한 관계를 갖는다. 자료구조가 결정되어야 그에 따른 효율적인 알고리즘을 결정할 수 있기 때문이다. 따라서 우리는 이렇게 말 할수 있다.
"자료구조에 따라서 알고리즘은 달라집니다."
"알고리즘은 자료구조에 의존적입니다."
때문에 자료구조와 알고리즘은 분명 다른 과목임에도 불구하고 매우 많은 연관성을 띄고 있다.
---------------------------------------------------------------
이 글은 <윤성우의 열혈 자료구조>를 보고 정리한 내용입니다.
'자료구조' 카테고리의 다른 글
단순 연결 리스트(1/2) (0) | 2018.11.10 |
---|---|
하노이타워(재귀적 구현) (0) | 2018.10.03 |
재귀의 활용 (0) | 2018.05.21 |
함수의 재귀적 호출의 이해 (0) | 2018.05.17 |
알고리즘의 성능 분석 방법 (2) | 2018.05.11 |