서브메뉴

본문

C언어로 쉽게 풀어쓴 자료구조 (Data Structures in C)
C언어로 쉽게 풀어쓴 자료구조 (Data Structures in C)
저자 : 천인국|공용해
출판사 : 생능출판사
출판년 : 2009
ISBN : 9788970506432

책소개

이 책은 도입부에서부터 C언어에서 시행착오를 겪는 자료 구조와 알고리즘에 대한 정의를 그림을 통해 충분히 설명하면서 자바 애플릿으로 작성된 가상 실습 소프트웨어로 개념을 확실히 잡아주고 있다. 더 나아가 유사코드로 작성된 알고리즘을 학습하고 최종적으로 C언어로 구현된 내용을 학습할 수 있도록 구성하고 있어, 자료 구조와 알고리즘의 개념의 이해는 물론이고 C언어로 구현된 내용을 통해 C언어를 쉽게 이해할 수 있다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

C언어로 쉽게 풀어쓴 자료 구조

우리가 C언어를 배우려고 할 때 시행착오를 겪는 부분들이 있다. 그중 하나가 자료 구조와 알고리즘을 매우 어렵다고 느끼는 것이고, C언어를 이해하지 않고 암기하려는 것이며, 더 나아가 C언어의 완전한 이해 없이 C++를 배우고자 도전하는 것이다.
이 책은 도입부에서부터 이러한 어려움을 해결해주고 있는데, 자료 구조와 알고리즘에 대한 정의를 그림을 통해 충분히 설명하면서 자바 애플릿으로 작성된 가상 실습 소프트웨어로 개념을 확실히 잡아주고 있다. 더 나아가 유사코드로 작성된 알고리즘을 학습하고 최종적으로 C언어로 구현된 내용을 학습할 수 있도록 구성하고 있어, 자료 구조와 알고리즘의 개념의 이해는 물론이고 C언어로 구현된 내용을 통해 C언어를 쉽게 이해할 수 있다.
자료 구조와 알고리즘을 쉽게 이해할 수 있도록 플래시로 제작된 애니메이션과 자바 애플릿으로 제작된 가상 실습 프로그램은 이론적인 내용을 쉽게 습득할 수 있도록 하고 있다. 이들 애니메이션과 가상 실습을 통하여 기존에 어렵게만 느껴지던 자료 구조의 내용을 멀티미디어 시각화를 통해서 알기 쉽게 전달하고 있는데, 특히 플래시 애니메이션을 통해서 이해하기 어려운 개념을 알기 쉽게 시각화하여 설명하고 있으며, 자바 애플릿을 제작하여 알고리즘의 실행 과정을 시각화함으로써 자료 구조가 실행 도중에 변화되는 모습을 생생하게 전달할 수 있도록 하였다. 또한 자바 애플릿 프로그램은 사용자가 입력 자료를 변경하여 실험을 할 수 있으며 프로그램 소스를 한 문장씩 실행하면서 자료 구조가 변화되는 모습을 직접 볼 수 있게 함으로써 프로그램 소스를 쉽게 이해할 수 있도록 하였다.
자료 구조나 알고리즘을 공부할 때는 처음에는 특정한 언어로 구현된 것을 보지 않는 것이 좋을 때가 많다. 대신 말로 된 설명이나 유사코드(pseudo-code) 등으로 개념을 먼저 이해하는 것이 중요하다. 이 책은 이러한 점을 배려하여 C 프로그램에 앞서서 유사코드로 작성된 알고리즘을 제시함으로써 자료 구조와 알고리즘의 핵심적인 내용을 쉽게 이해할 수 있도록 하였다.

실습을 통한 프로그래밍 능력 배양

이론을 이해한 다음, 프로그래밍 도구를 이용하여 실습을 해보는 것은 프로그래밍 능력 향상에 많은 도움이 된다. 이 책에서는 자료 구조 실습을 단계적으로 진행해볼 수 있도록 실습 문제를 두고 있는데, 실습 문제에서는 빈칸이 포함된 소스가 주어지고 학습자들이 단계적으로 소스를 추가해가는 방식으로 자율적으로 실습을 진행할 수 있도록 하였다.
자료 구조와 알고리즘을 학습할 때 가능하면 실질적이고 구체적인 실세계의 문제를 함께 다루는 것이 큰 도움이 된다. 이 책은 우리가 경험하는 실세계의 대상들과 관련이 있는 것들을 풀어볼 수 있도록 실제적인 응용 프로그램을 많이 다루고 있다. 프로그램은 단편적인 프로그램이 아닌 완전한 프로그램을 제공하려고 노력하였다. 예를 들어, 기존의 경우에는 일부 함수만 제시됨으로써 실제로 학생들이 실습 또는 활용하려고 할 때에 여러 가지 애로 사항이 많았는데, 이 책에서는 최대한 main 함수를 포함하여 완전한 프로그램을 제공하여 사용자들이 쉽게 소스를 활용할 수 있도록 하였다.

학습을 효과적으로 하기 위한 책의 구성과 내용

이 책은 전체적으로 12개의 장으로 구성되어 있다. 각 장의 주요 내용은 다음과 같다.
1장 ‘자료 구조와 알고리즘’에서는 자료 구조와 알고리즘의 개념, 추상 데이터 타입 도입의 필요성, 시간 복잡도의 개념, 빅오 표기법에 의한 알고리즘 분석 기법 및 자료 구조 표기법을 설명하고 있다. 2장 ‘순환’에서는 순환의 개념, 순환 알고리즘의 구조, 순환 호출 사용 시 주의점, 순환 호출 응용력 배양에 대해 서술하고 있다. 3장 ‘배열, 구조체, 포인터’에서는 배열, 구조체, 포인터의 개념, 배열을 이용한 응용 프로그램 작성, 함수 호출 시에 배열과 구조체의 전달 방법, 포인터 관련 연산자, 동적 메모리 할당 및 반납의 메커니즘을 기술하고 있다.
4장 ‘리스트’에서는 리스트의 개념과 추상 자료형, 리스트의 배열과 연결 리스트의 2가지 구현 방법, 연결 리스트의 개념과 작동 원리, 연결 리스트의 여러 가지 연산, 리스트를 이용하여 프로그램할 수 있는 능력에 대해 설명하고 있다. 5장 ‘스택’에서는 스택의 개념과 추상 자료형, 스택의 동작 원리, 배열과 연결 리스트의 2가지 구현 방법, 스택 응용 프로그램을 제작할 수 있는 능력에 대해 서술하고 있다. 6장 ‘큐’에서는 큐의 개념과 추상 자료형, 배열과 연결 리스트의 2가지 구현 방법, 덱의 개념과 구현 방법, 큐를 이용하여 프로그램할 수 있는 능력에 대해 기술하고 있다.
7장 ‘트리’에서는 트리의 개념, 트리의 순회 알고리즘, 이진 탐색 트리의 동작 원리, 이진 탐색 트리의 효율성에 대해 설명하고 있다. 8장 ‘우선순위 큐’에서는 우선순위 큐의 개념, 배열, 리스트로 구현된 우선순위 큐의 장단점, 히프의 동작 원리, 히프의 효율성, 히프의 배열을 이용한 구현에 대해 기술하고 있다. 9장 ‘정렬’에서는 정렬의 개념, 각 정렬 알고리즘의 동작 원리, 장단점, 효율성, C언어 구현 등에 대해 서술하고 있다.
10장 ‘그래프’에서는 그래프의 개념, 그래프를 표현하는 2가지 방법, 그래프 순회 방법, 최단 경로, 최소 신장 트리 알고리즘, 그래프를 문제 풀이에 응용하는 방법을 설명하고 있다. 11장 ‘해싱’에서는 추상 자료형 사전 구조, 해싱의 개념, 해시 함수의 변환 방법, 충돌 해결책인 선형 조사법 및 체이닝에 대해 기술하고 있다. 12장 ‘탐색’에서는 순차 탐색과 이진 탐색의 장단점, 색인 탐색과 보간 탐색의 개념, 균형 트리를 사용하는 목적, AVL 트리의 원리 및 삽입 연산, 2-3 트리와 2-3-4 트리의 개념에 대해 서술하고 있다.
[교보문고에서 제공한 정보입니다.]

목차정보

CHAPTER 01 자료 구조와 알고리즘
1.1 자료 구조와 알고리즘
1.2 추상 데이터 타입
1.3 알고리즘의 성능 분석
1.4 자료 구조 표기법
연습문제

CHAPTER 02 순환
2.1 순환의 소개
2.2 거듭제곱 값 계산
2.3 피보나치 수열의 계산
2.4 하노이탑 문제
연습문제

CHAPTER 03 배열, 구조체, 포인터
3.1 배열
3.2 배열의 응용: 다항식
3.3 배열의 응용: 희소 행렬
3.4 구조체
3.5 포인터
3.6 동적 메모리 할당
연습문제

CHAPTER 04 리스트
4.1 리스트 추상 데이터 타입
4.2 배열로 구현된 리스트
4.3 연결 리스트
4.3.1 연결 리스트의 소개
4.3.2 단순 연결 리스트
4.3.3 원형 연결 리스트
4.3.4 이중 연결 리스트
4.3.5 연결 리스트의 응용: 다항식
4.4 연결 리스트로 구현된 리스트
4.5 선형 리스트의 응용: 텍스트 에디터
연습문제

CHAPTER 05 스택
5.1 스택 추상 데이터 타입
5.2 배열로 구현한 스택
5.3 연결 리스트로 구현한 스택
5.4 괄호 검사
5.5 수식의 계산
5.6 미로 탐색 문제
연습문제

CHAPTER 06 큐
6.1 큐 추상 데이터 타입
6.2 배열로 구현된 큐
6.3 연결 리스트로 구현된 큐
6.4 덱
6.5 큐의 응용
연습문제

CHAPTER 07 트리
7.1 트리의 개념
7.2 이진 트리의 소개
7.3 이진 트리의 표현
7.4 이진 트리의 순회
7.5 이진 트리의 연산
7.6 스레드 이진 트리
7.7 이진 탐색 트리
7.8 이진 탐색 트리의 응용: 영어 사전
연습문제

CHAPTER 08 우선순위 큐
8.1 우선순위 큐 추상 데이터 타입
8.2 우선순위 큐의 구현 방법
8.3 히프
8.3.1 히프의 개념
8.3.2 히프의 구현
8.3.3 삽입 연산
8.3.4 삭제 연산
8.3.5 히프의 복잡도 분석
8.4 히프의 응용
연습문제

CHAPTER 09 정렬
9.1 정렬이란?
9.2 선택 정렬
9.3 삽입 정렬
9.4 버블 정렬
9.5 셸 정렬
9.6 합병 정렬
9.7 퀵 정렬
9.8 히프 정렬
9.9 기수 정렬
9.10 정렬 알고리즘의 비교
9.11 정렬의 응용: 영어 사전을 위한 정렬
연습문제

CHAPTER 10 그래프
10.1 그래프란?
10.2 그래프 추상 데이터 타입
10.3 그래프의 표현 방법
10.4 그래프의 탐색
10.4.1 깊이 우선 탐색
10.4.2 너비 우선 탐색
10.5 연결 성분
10.6 신장 트리
10.7 최소 비용 신장 트리
10.7.1 Kruskal의 MST 알고리즘
10.7.2 Prim의 MST 알고리즘
10.8 최단 경로
10.8.1 Dijkstra의 최단 경로 알고리즘
10.8.2 Floyd의 최단 경로 알고리즘
10.9 위상 정렬
연습문제

CHAPTER 11 해싱
11.1 해싱이란?
11.2 추상 자료형 사전 구조
11.3 해싱의 구조
11.4 해시 함수
11.5 충돌 해결책
11.5.1 선형 조사법
11.5.2 체이닝
11.6 해싱의 성능 분석
연습문제

CHAPTER 12 탐색
12.1 탐색이란?
12.2 정렬되지 않은 배열에서의 탐색
12.3 정렬된 배열에서의 탐색
12.3.1 정렬된 배열에서의 순차 탐색
12.3.2 이진 탐색
12.3.3 색인 순차 탐색
12.3.4 보간 탐색
12.4 균형 이진 탐색 트리
12.4.1 AVL 트리
12.4.2 2-3 트리
12.4.3 2-3-4 트리
연습문제
[교보문고에서 제공한 정보입니다.]