Coding Log


자료구조란 무엇인가

영어로는 Data Structure 라고 표기하며, 전산학에서 다루는 하나의 분야로 자료를 보다 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법을 말한다.

프로그래밍에서 데이터를 구조적으로 표현하고 이를 구현하는 데 필요한 알고리즘에 관련된 기초과목으로 컴퓨터공학을 전공하는 사람에게는 아무리 강조해도 지나치지않을 만큼 중요한 과목이다.

효과적으로 설계된 자료구조는 실행시간(시간복잡도) 혹은 메모리 용량(공간복잡도) 와 같은 자원을 최소로 이용하며 연산을 수행할 수 있도록 해준다.

자료구조는 구현 방식 또는 형태에 따라 여러 종류가 존재하고 있으며, 각 자료구조는 해당 자료구조에 쓰임새에 따른 연산 및 목적에 맞추어 설계되어 있다.

프로그램을 구현하기 위한 전 단계로 설계를 진행할 때, 가장 먼저 고려할 것이 바로 어떤 자료구조를 사용하느냐 이다.

소규모 시스템에선 상대적으로 미미하겠지만 대규모 시스템을 구축할 때 구현의 난이도나 성능이 자료구조에 의해 크게 좌우된다는 것은 많은 개발자들의 경험적 통계로 뒷받침되고 있다.

이처럼 자료구조를 먼저 선택하게 된다면 해당 자료구조를 이용할 알고리즘의 선택이 상대적으로 명확해진다.

반대로 알고리즘을 먼저 선택하고 자료구조를 선택하는 경우엔, 특정 프로그램이나 시스템이 특정한 알고리즘을 무조건 적용해야 하는 경우이며, 해당 알고리즘의 최대 성능을 위한 특정 자료구조가 있는 경우이다.

위에서 계속 언급했듯 자료주고와 알고리즘의 선택은 최고의 성능을 내기 위해 필수적으로 선택해야 할 조건이다.

아무리 강조해도 지나치지않는 중요성을 지닌 자료구조를 분류해보면 아래와 같다.

자료구조의 종류

구현 방식

  • 배열(Array)
  • 튜플(Tuple)
  • 연결 리스트(Linked List)
  • 환형 연결 리스트(Circular Linked List)
  • 이중 연결 리스트(Doubly Linked List)
  • 환형 이중 연결 리스트(Doubly Circular Linked List)
  • 해시 테이블(Hash Table)

선형 구조

  • 스택
  • 환형 큐

비선형 구조

  • 그래프
  • 유향 그래프
  • 무향 그래프
  • 트리
  • 이진트리

자료구조의 종류는 위에서 나타낸 것이 전부는 아니며, 더욱 많은 종류의 자료구조가 존재한다.

본 카테고리는 자료구조의 이론적인 설명을 위한 포스팅을 작성할 카테고리로 위의 자료구조들 중 몇몇 자료구조를 선택하여 구현해 나갈 예정이다.

실제 코드가 들어가는 만큼 본 카테고리는 프로그래밍 언어를 알고 있다는 전제하에 진행된다.

DISQUS 로드 중…
댓글 로드 중…

트랙백을 확인할 수 있습니다

URL을 배껴둬서 트랙백을 보낼 수 있습니다