PART I : 본격적인 자료 구조 공부에 앞서
CHAPTER 1 프로그래밍 기초와 소프트웨어 공학 3
1.1 소프트웨어 공학 5
1.2 소프트웨어 개발 주기 6
1.3 문제 해결을 위한 프로그래밍의 절차 7
1.4 일반적인 코딩 팁 10
1.5 이 책에서 사용하는 코딩 규칙 11
1.6 디버깅하는 방법 13
CHAPTER 2 자료 구조와 알고리즘의 기초 15
2.1 자료 구조란? 17
2.2 일상 생활에서 사용하는 자료 구조들의 예 19
2.3 알고리즘이란? 22
2.3.1 알고리즘 효율성 분석 #1 23
2.3.2 알고리즘 효율성 분석 #2 29
2.3.3 BIG-O 표기법 34
2.4 추상 데이터 타입(Abstract Data Type: ADT 36
2.5 기본 자료형 39
연습문제 40
CHAPTER 3 Visual Studio와 openFrameworks 기초 43
3.1 openFrameworks와 Visual Studio 설치 46
3.1.1 openFrameworks 설치 47
3.1.2 Visual Studio Community 2017 버전 설치 48
3.1.3 Visual Studio에서의 C 언어를 이용한 콘솔 프로그래밍 51
3.2 오픈프레임웍스 프로그래밍 시작 64
3.2.1 오픈프레임웍스 라이브러리의 폴더 구조 64
3.2.2 오픈프레임웍스 empty 프로그램 제작 66
3.2.3 오픈프레임웍스 소스 코드 구조 72
3.2.4 오픈프레임웍스 텍스트 모드 프로그램 제작 73
3.2.5 오픈프레임웍스 그래픽 모드 프로그램 제작 76
3.3 파일 분할 및 헤더 파일 구성 방법 #1 81
3.3.1 오픈프레임웍스 공 움직이기 82
3.3.2 오픈프레임웍스 라켓으로 공 반사하기 87
3.3.3 오픈프레임웍스 big-O 그래프로 비교해보기 90
3.4 헤더 파일에 적는 내용 #2 92
3.4.1 헤더 파일(간단한 경우 92
3.4.2 헤더 파일(조금 더 복잡한 경우 94
이 책의 다른 점
저자가 이 책을 쓰려고 마음 먹은 이유는, 자료 구조를 배우는 과정에서 자주 겪는 단점들을 줄이면서 공부할 수 있는 교재를 만드는 것이었다. 이를 위해서 이 책은 기존의다른 자료 구조 교재와 다른 점이 많다. 이 책의 성격을 확실히 설명하는 것이 독자들이 더욱 효과적으로 이 교재를 보는 방법일 것이다.
한 종류의 자료 구조의 구현을 난이도에 따라서 여러 방법으로 소개하였다 : 각각의 자료구조를 구현함에 있어서 간단한 방법과, 조금은 더 복잡하지만 효율적인 방법을 차례로 기술하려고 하였다. 이 교재를 처음부터 끝까지 빠짐없이 모두 공부하는 것보다, 자신이 이해되는 수준에서 학습의 깊이를 설정하고, 여러 번 교재를 보면서 조금씩 자신의 지식의 깊이를 심화할 수 있도록 하였다. 자신의 프로그래밍 실력에 적합한 버전부터 하나씩 차례로 공부하자.
게임과 인공 지능에 적용되는 자료 구조를 다룬다 : 모든 공부는 흥미 유발이 중요하다.
지금 배우는 각 자료 구조가 어떻게 인공 지능 분야와 게임 프로그래밍에 사용될 수있는지 소개함으로써 동기 부여에 도움이 되도록 하였다.
시각적 출력을 이용한 학습 흥미 부여 : 그래픽 결과를 출력하는 프로그램을 작성해서흥미를 유발한다. C 언어 프로그래밍은 대부분 콘솔(텍스트 모드의 입출력 화면에서 글자 출력으로 시작한다. 이 책에서는 오픈프레임웍스(openFrameworks라는 라이브러리를 이용해서 다양한 그래픽 출력을 함으로써, 각 자료 구조가 실제 문제에 어떻게 사용될 수 있는지를 보이려고 노력하였다.
실용적인 데이터를 사용한다 : 대부분의 교재에서는 10~100여개 정도의 데이터를 자료 구조의 테스트 데이터로 사용한다. 다양한 자료 구조들은 대용량의 데이터를 사용할 때 성능의 차이가 명확해진다. 수 십, 수 백 개 정도의 소량의 데이터들을 다룰때는 각 자료 구조들의 효율성이 실감나지 않는다. 이미 하드웨어가 엄청나게 빠르기 때문이다. 그래서 이 교재에서는 대량의 데이터를 실습 데이터로 사