티스토리 뷰

자료구조

자료구조에 대한 기본적인 이해

취뽀가자!! 2018. 5. 10. 12:33

자료구조란 무엇인가?

자료구조는 데이터를 표현하고 저장하는 것을 말한다.

"프로그램이란 데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것이다." 라는 말이 있는데 여기서 '데이터를 표현' 한다는 '데이터를 저장' 한다는 것을 포함하는 개념이다. 그리고 '데이터 저장'을 담당하는 것이 바로 자료구조라 한다.


넓은 의미에서 int형 변수도, 구조체의 정의도 자료형에 속한다. int형 변수도, 구조체도 데이터를 표현 및 저장하는 하나의 방법이기 때문이다. 뿐만 아니라 배열도 자료구조의 일종이다.


자료구조는 기본적으로 다음과 같이 분류할 수 있다.



위 그림에서 보이듯 파일도 데이터를 저장하는 도구이기 때문에 파일의 구조도(파일이 데이터를 저장하는 방식도) 자료구조에 포함이 된다. 하지만 보통 자료구조에서 다루는 것은 '선형 자료구조'와 '비선형 자료구조'이다.


선형 자료구조와 비선형 자료구조의 의미

선형 자료구조

선형 자료구조는 그 이름이 의미하듯이 자료를 표현 및 저장하는 방식이 선형이다. 선형이라는 것은 '선의 형태'라고 이해하면 된다. 즉, 선형 자료구조는 데이터를 선의 형태로 나란히 혹은 일렬로 저장하는 방식이다. 

선형 자료구조에는 리스트와 스택, 큐 가 있다.

비선형 자료구조

비선형 자료구조는 선형 자료구조와는 반대로 데이터를 나란히 저장하지 않는 구조이다. 


비선형 자료구조에는 트리, 그래프가 있다.


자료구조와 알고리즘

위에서 말했듯이 자료구조가 '데이터의 표현 및 저장방법'을 뜻한다면, 알고리즘은 이렇듯 표현 및 저장된 데이터를 대상으로 하는 '문제의 해결 방법'을 뜻한다. 

예를 들어 다음의 배열 선언은 자료구조적 측면의 코드이다.

int arr[10] = {1,2,3,4,5,6,7,8,9,10};


반면 배열에 저장된 모든 값의 합을 더하는 다음 반복문의 구성은 알고리즘적 측면의 코드이다.


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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함