“ 나는 만 가지의 발차기를 한 번씩 연습한 상대는 두렵지 않다. 내가 두려워하는 것은 단 한 가지의 발차기만 만 번 반복해 연습한 상대를 만나는 것이다.
-이소룡-

책의 이부분을 읽는데 이 명언이 생각나네요. 프로그래밍공부 전반에 적용될 수 있는 말이라고 일반화하지는 않겠습니다. 다만 기본을 다지는 마음가짐으로 적절하다고 생각해서 이렇게 인용합니다.

Q. 데이터 구조의 기본이 무엇인가요?

A. “배열” 과 “포인터” 입니다. 이 두 가지 형태에서 발전한 형태라고 생각합니다.
(배열과 포인터에 대한 자세한 설명은 생략하겠습니다.)

Q. “배열”과 “포인터”를 기준으로 데이터구조를 나눈다면 어떻게 될까요?

A. “인접 데이터 구조” 와 “연결 데이터 구조” 로 나눌 수 있습니다.

Q. 인접 데이터 구조가 무엇인가요?
A. 인접 데이터 구조는 영어로 Contiguous data structures 입니다. 직역하면 연속 데이터 구조입니다.
영화 중에 “컨테이져스”라는 영화가 있습니다. 여기서는 전염의 의미로 사용된 것 같으나 무언가 물리적으로 가까운 것을 뜻하는 것 같습니다. 실제로 메모리에서 인접한 부분에 저장되는 것들을 뜻합니다. 예시로 배열(arrays), 힙(heaps), 매트릭스(matrices) 그리고 해시테이블(hash tables) 등이 있습니다.

Q. 연결 데이터 구조는 무엇인가요?
A. 연결 데이터 구조는 영어로 Linked data structrues 입니다. 직역하면 연결된 데이터 구조 입니다.
음.. 무언가 연결되어있을 것 같은 느낌이 드네요. 그렇다면 무엇으로 연결했을까요? 그 무엇이 앞서 말했던 “포인터” 입니다. 포인터는 주소라고 생각하면 편합니다. 그 주소를 통해서 데이터들이 연결되어 있는 것이죠. 예시로 목록(lists), 트리(trees) 그리고 그래프(graphs) 등이 있습니다.

profile
iOS Dev

관심 있을 만한 포스트

0개의 댓글