Computer Science/자료구조

자료구조란

mitdog 2023. 2. 4. 13:06

정의 :

  내가 자료구조에 대해서 처음 접한 책인 <누구나 자료구와 알고리즘>(이하 <누자알>)에서는

"자료구조란 데이터를 조직하는 방법" 이라고 했다.

두 번째로 접한 책인 <Do it! 자료구조와 함께 배우는 알고리즘 입문(C언어편)>(이하 <두잇자알C>)에서는

"자료구조란 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계",

쉽게 말해서 "자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법" 이라고 정의했다.

문병로 교수님의 <쉽게 배우는 알고리즘>(이하 <쉽배알>)에서는 어떠한가,

"알고리즘의 선수 과목은 자료구조다. ... 자료구조는 생각의 전개를 위해 필요한 기본적인 도구다." 라고

하셨다.

  개인적인 견해로는 <누자알>에서 정의한 자료구조의 의미가 가장 함축적으로 깔끔하게 이를 표현하는 것 같다.

컴퓨터로 다룰 모든 것들은 데이터이고, 그것들을 어떻게 저장하는가, 그것들 사이의 관계를 어떻게 다룰 것인가가 자료구조이기에 '자료구조 ≒ 데이터를 조직하는 방법' 이 가장 적절하고, 외우기도 쉬운 정의라고 느낀다.

 

종류:

-배열

-연결 리스트

-검색 트리

... 

 

자료구조의 4연산:

  자료구조에는 4가지 종류의 연산이 있다.

1. 읽기

2. 검색

3. 삽입

4. 삭제

데이터를 저장, 관리하는데 당연히 필요한 기능들이다. <누자알>에서 참고해왔다.

[읽기]

  자료구조 내 특정 위치를 찾아보는 것이다. (배열에서는 : 특정 인덱스의 값을 찾아보는 것)

 

[검색]

  자료구조 내에서 특정 값을 찾는 것이다. (배열에서는 : 특정 값이 배열에 있는지, 있다면 어느 인덱스에 있는지 찾아보는 것)

 

[삽입]

  자료구조에 새로운 값을 추가한다는 의미이다. (배열에서는 : 특정한 값을 어떤 위치에 삽입하는 것)

 

[삭제]

  자료구조에서 값을 제거 하는 것이다. (배열에서는 : 특정한 값을 삭제하거나 하는 것)

  

자료구조의 선택이 중요한 이유:

  어떠한 자료구조를 선택하느냐에 따라 프로그램의 효율성, 프로그램이 감당할 수 있는지 여부가 갈리기 때문에, 여러 상황을 고려하여 최적의 자료구조를 정해 사용해야 한다.