본문 바로가기
  • hazard_dev@__
  • hazard_dev@__
C

자료구조 먹는건가요? (on c)

by Hazard3_o00sung 2020. 2. 14.
728x90

본 포스트는 C언어를 중심으로 작성되었습니다.

 

자료구조란? 

공부를 못할때는 책상을 치워야 속이 쉬원하고, 정리가 된것같아서 공부가 잘되나요?

 

반드시 그렇지는 않습니다. ㅋㅋㅋ 생각해보면 공부를 하기 싫어서 책상을 치우는게 더 재밌다고 느껴지는것 같아요 (물론, 필자 기준) 

 

자료구조 또한 위와 같습니다. 우리가 볼펜을 찾을때 아무곳에 던져져 있다면 다시 사용할 때 찾기가 쉬울까요? 전혀 그렇지 않습니다. 그렇다면 시각화해서 표현해보겠습니다.

 

 

 

 

위 그림 차이점 한번에 아시겠죠? 보다시피 정리된 구조는 안정감을 줌과 동시에 원할때 신속하게 사용할 수 있겠죠? 

자료구조 또한 같다고 생각하시면 됩니다. 자료를 효율적으로 저장하고 표현하고! 처리할수 있도록 도와주는것이 바로 자료구조입니다!

그렇다면 컴퓨터에선 이 자료를 어떻게 해야 효율적으로 처리를 할 수 있을까요 ? 다음과 같은 프로세스를 머릿속으로 그려보세요

 

1. 문제를 찾아낸다. - 

2. 처리방식과 대사을 결정하고 그에 대한 알고리즘과 자료를 토대로 하여 프로그램을 작성한다. 

3 - 작성한 프로그램은 컴파일러를 통하여 번역되고 실행됩니다. 실행결과에 따라 문제 해결의 기준을 세웁니다.

 

간단하게 예를 들어 말씀드리면, 핸드폰 액정이 깨진 상황에서 어떻게 해결하죠? 군말없이 as센터로 달려가야겠죠?

 

1. 핸드폰 액정이 깨진 상황을 엔지니어가 확인한다 - 문제를 찾아낸다.

 

2. 핸드폰 액정의 새 부품을 구함과 동시에 액정 교체 방법을 알아내 수리를 진행한다. - 처리방식과 대상을 결정하고 그에 대한 알고리즘과 자료를 토대로 프로그램 작성.

 

3. 핸드폰 수리 후 전원을 켠 뒤 제대로 작동되는지 확인한 후 문제를 해결한다. - 작성한 프로그램은 컴파일러를 통하여 번역되고 실행.

 

간단하게 예로 들어보았습니다. 

 

자료구조가 간략하게 이해가 되었다면,  이론적인 측면에서 접근해보겠습니다. 

 

자료구조는 이론적인 측면과 구체적 측면을 고려할 수 있습니다. 이론적 측면에서는 그래프. 집합, 등 기초 수학의 이론을 토대로 하여 알고리즘을 분석하고 최적의 상태를 결정합니다.

 

구체적 측면에서는 실제 clang 자료형인 문자열 리스트 등을 통하여 알고리즘을 구현하여 다양한 분야에 응용합니다.


그렇다면 자료구조의 분류는 어떻게 할까요?

 

자료구조는 자료형태에 따라 분류되기도하며 선형식 비선형식 구조로 비교되기도 합니다.

 

 

 

 

 

 

다음과 같이 자료구조를 분류할 수 있습니다. 

단순구조는 기본적인 데이터 타입에 해당되며 선형구조는 자료 간 1:1 대응을 하는 관계를 가진 자료형을 의미합니다. 비선형은 계층 구조(조직도와 유사) 망구조를 갖고 있습니다. 

파일구조는 말그대로 파일의 구성방식에 관한 자료형입니다.

 

 

 

자료구조는 상당히 중요합니다. 

프로그래밍에서 자료구조를 뺀다라는것은 사실상 불가능하죠? 저도 처음 공부할 때는 이게 다 무슨 소린가 했지만, 차차 공부를 하면서 깨닫게 되고 다시 돌아오고 이렇게 된 경우가 다반사였으니, 처음부터 완벽히 이해하려고 들면 들수록 도망가버립니다!

 

읽어주셔서 감사합니다~~

 

 

 

 

 

728x90

댓글