구)홈페이지 오탈자 보기
좋은 프로그램을 만드는 핵심 원리 25가지

 

페이지오탈자 내용등록일
0

((저자 소개) 김종진)

XML 관련 관련 논문
==>
XML 관련 논문

2006-10-251
5

((5p) 머리말)

독자를 위해 저자의 홈페이지(http://www.jejue.ac.kr/~jkim)를 운영하고
==>
독자를 위해 저자의 홈페이지(http://www.jejue.ac.kr/~jkim)와 카페(http://cafe.naver.com/computerbook)를 운영하고

2006-10-251
15

(15 배열 첫 페이지에서)

첫 페이지에서 사진
==>
첫 페이지에서 사진 -> 삭제

2006-10-251
25

(P25)

이는 모든 집합의 부분집합이다. 그리고 원서가 1개인 {a},{b}, ...
==>
이는 모든 집합의 부분집합이다. 그리고 원소가 1개인 {a},{b}, ...
     

2006-10-251
29

((p 29) [프로그램 1-2])

select, num, num1, num2, I
==>
select, num, num1, num2, i

2006-10-251
31

((p 31) 아래에서 6번째 줄)

int I
      
==>
int i
     

2006-10-251
35

((p 35) 본문 옆 여벽에 나와 있는 소스 설명)

집합 set1에 대한 집합 st2의 차지합 set를 구하는 함수이다.    
==>
집합 set1에 대한 집합 set2의 차집합 set를 구하는 함수이다.     

2006-10-251
36

((p 36) 페이지에 가운데 문장 끝부분)

다음과 같이 공용체가 카티션 곱에 의한 데이터형이라는 정도만 알아두자.     
==>
다음과 같이 구조체가 카티션 곱에 의한 데이터형이라는 정도만 알아두자.

2006-10-251
36

((p 36) 카티션 곱의 정의(조건제시법))

A*B = { (x, y) | x ∈ A 그리고 x ∈ B }      
==>
A*B = { (x, y) | x ∈ A 그리고 y ∈ B }

2006-10-251
45

((p 45) 중간부분: 관계식 2a+1...)

집합 A={1,2,3}의 원소가 관계식이 2a+1에 의해 집합 B={1,3,5,7}에 ...
==>
집합 A={1,2,3}의 원소가 관계식이 2a+1에 의해 집합 B={3,5,7}에 ...
     

2006-10-251
51

((p 51) 중간에 작은 제목)

합성 관계를 두 관계를
==>
합성 관계는 두 관계를

2006-10-251
51

((p 51) 첫번째 풀이 밑에서 둘 째줄)

즉, 정리하면 R = {(2,2), (2,3), (3,1), (3,2)}가 된다
==>
즉, 정리하면 R = {(1,2), (1,3), (2,2), (2,3), (3,1), (3,2)}가 된다. 

2006-10-251
54

(p 54 밑에서 4번째 줄, 2번째 줄, [그림2-3])

학생 릴레이션에서 이름과 성적

이름,성적(학생)

[그림2-3] 이름, 성적(학생)결과      
==>
학생 릴레이션에서 학번과 성적

학번,성적(학생)

[그림2-3] 학번, 성적(학생)결과
     

2006-10-251
55

((p 55) 5, 7, 10)

[그림 2-2]의 학생 릴레이션과

[표 2-4]

[그림 2-5]과      
==>
[그림 2-1]의 학생 릴레이션과

[그림 2-4]

[그림 2-5]와      

2006-10-251
55

((p 55) [그림2-5])

컴교      A301     720-0801
윤리      A304     720-0816
컴교      B205     720-0821
과학      C201     720-0854
수학      E304     720-0858
==>
컴교      E304     720-0858
윤리      A301     720-0801
컴교      E304     720-0858
과학      B205     720-0821
수학      A304     720-0816    

2006-10-251
60

((p 60) 네번째 문단 첫째줄)

[그림 3-4]는 함수가 되는
==>
[그림 3-3]은 함수가 되는
     

2006-10-251
64

((p 64) 첫번째 문장 두번째 줄 끌 부분)

... 원소가 한개로 빠짐없이 대응하
==>
... 원소가 한개도 빠짐없이 대응하

2006-10-251
66

((p 66) 아래에서 3번째 줄)

[그림 3-13]과
==>
[그림 3-14]와 

2006-10-251
66

((p 66) 첫번째 예제문제)

f(x)=2^x+1
==>
f(x)=2x+1

2006-10-251
66

(두번째 예제 문제 1))

∴ g 。f(x) -> -2x-1
==>
∴ g 。f(x) -> 2x+3

2006-10-251
76

((p 76) 마지막줄)

0.6875_2는 0.1011_2로 변환된다.
      
==>
0.6875_10는 0.1011_2로 변환된다.
     

2006-10-251
77

((p 77) [그림 4-3])

[그림 4-3]의 (b) 나눗셈에서 계산식
==>
[그림 4-3]의 (b) 나눗셈에서 계산식 세로 줄 정렬

2006-10-251
83

((p 83) 소스 6번째 줄)

for (i=length-1; i>=0; I--)
      
==>
for (i=length-1; i>=0; i--)

2006-10-251
88

((p. 88) 마지막 그림)

25, 35, 49를 X로 표시해야 함.      
==>
25, 35, 49를 X로 표시해야 함.     

2006-10-251
90

((p90) 표 5-1)

0 - 100,000     
==>
0 - 1,000,000    

2006-10-251
99

((p 99) 밑에서 두번째 줄)

... 현의 길이에 따는 소리의
==>
... 현의 길이에 따른 소리의

2006-10-251
101

((p 101) 의 첫줄)

(1)은 첫째 항이 2이고 다음 항은 바로 앞 항에 2를 곱한 값이고,
==>
(1)은 첫째 항이 2이고 다음 항은 바로 앞 항에 3을 곱한 값이고,

2006-10-251
104

((p104~ 105 ) 피보나치 수열에서 알 수 있는 것들)

(4)과 (5)번의 그림 예
==>
(4)과 (5)번의 그림 예 바꾸기

2006-10-251
116

((p 116) 위에서 4째 줄)

n*(n-1)*(n-2)*...*n      
==>
n*(n-1)*(n-2)*...*1 => (마지막 n을 1로)

2006-10-251
117

((pp. 117-119) [프로그램 7-1]과 [실행 결과])


==>
#include <stdio.h>
#define MAX 10

void permutation(int n, int r);
void print(int r, int s[]);
int p=0;

main()
{
   int n, r;
   printf("input number of objects ==> ");
   scanf("%d", &n);
   printf("input number to be chose ==> ");
   scanf("%d", &r);
   permutation(n, r);
}

void permutation(int n, int r)
{
   int s[MAX];
   int i, j=0;
   int a, b, end_n, boo;

   /* n개의 원소를 배열에 저장한다. */
   for (i=0; i<n; i++)
      s[i] = i+1;

   /* n진법을 이용하여 순열을 만들고 print함수를 호출한다. */
   for(end_n = n; s[0] != end_n+1; s[r-1]++) {
      boo=1;
      /* n진법을 만든다. */
      for (i=r-1; i>0; i--) {
         if(s[i] == n+1) {
            s[i]=1;
            s[i-1]++;
         }
      }
      /* n진법 수 중 중복되는 수가 있는 수를 가려낸다. 121과 같은 경우 */
      for(a=0; a<r-1; a++)
         for(b=a+1; b<r; b++) {
            if(s[a]==s[b])
               boo=0;
         }
         /* n진법 수 중 중복되지 않는 수는 출력한다. */
      if((boo==1)&&(s[0] != end_n+1))
            print(r, s);
   }
   printf("
");
}

void print(int r, int s[])
{
   int i;
   for (i=0; i<r; i++)
   printf("%d", s[i]);
   printf(" ");
   p++;
   /* 5개의 수 출력후 개행 */
   if (p%5 == 0)
      printf("
");
}

[실행 결과]
$ ./a.out
input number of objects ==> 5
input number to be chose ==> 3
123     124     125     132     134
135     142     143     145     152
153     154     213     214     215
231     234     235     241     243
245     251     253     254     312
314     315     321     324     325
341     342     345     351     352
354     412     413     415     421
423     425     431     432     435
451     452     453     512     513
514     521     523     524     531
532     534     541     542     543

$     

2006-10-251
122

(p.122 아래에서 세번째 줄)

10_C_3 = 10_P_3 = 10_P_3/3!
==>
10_C_3 = 10_P_3/3!
     

2006-10-251
130

(p.130 첫 번째 식)

<첫번째식>
n_C_0 + n_C_1 + n_C_2 + ... + = n_C_n2^n

<세번째식>
이다. 따라서 이 두 식을 더하고 빼어
n_C_1 + 2*n_C_2 + 3*n_C_3... + n*n_C_n2 = n*2^n-1

<네번째식>
n_C_0 - *n_C_1 + n_C_2 + n_C_3...(-1)^n-1*n_C_n = 0
==>
<첫번째 식>
n_C_0 + n_C_1 + n_C_2 + ... + n_C_n = 2^n

<세번째식>
이다. 따라서 이 두 식을 더하고 뺀 식을 더하면 
2(n_C_0 + n_C_2 + n_C_3 + ...+ n_C_n) = 2*2^n

<네번째식>
n_C_0 + n_C_2 + n_C_3 + ...+ n_C_n = 2^n

2006-10-251
138

((p 138) 아래에서 3, 2번째 줄)

대칭 행려

대칭 행려가
==>
대칭 행렬

대칭 행렬이     

2006-10-251
139

((p 139) [그림 8-13])

[그림 8-13]

[그림 8-13] 대칭 행려의 예
==>
[그림 8-13]을 138 쪽 대칭 행렬 옆으로 이동

[그림 8-13] 대칭 행렬의 예   

2006-10-251
142

((p 142) [그림 8-19])

[그림 8-19] 2x2 행렬 A와 2x2 행렬 B
      
==>
[그림 8-19] 2x2 행렬 A와 2x2 행렬 B의 곱셈
     

2006-10-251
143

((p 143) [그림 8-22])

[그림 8-22] 행렬로 표시
==>
[그림 8-22] 행렬로 표시 -> 삭제

2006-10-251
144

((p.144) 그림 8-23의 연산 과정의 결과)

22 26
49 64     
==>
22 28
49 64  

2006-10-251
146

((p 146) [그림 8-27])

[그림 8-27] AX = E      
==>
[그림 8-27] AX = E   -> 삭제

2006-10-251
154

((p154) 첫번째 예제문제)

1/2 + 1/4 + 1/8 + 1/16 + ... + (1/2)n + ...
==>
1/2 + 1/4 + 1/8 + 1/16 + ... + (1/2)^n + ...     

2006-10-251
160

(p.160 예제문제 풀이)

S - (1/3)S = (1 + 2/3 + 3/(3^2) + 4/(3^3) + 5/(3^4) + ... + (n-1)/(3^(n-2)) + n/(3^(n-1))) - (1/3 + 3/(3^2) + 4/(3^3) + 5/(3^4) + ... + (n-1)/(3^(n-2)) + n/(3^(n-1)))
==>
S - (1/3)S = (1 + 2/3 + 3/(3^2) + 4/(3^3) + 5/(3^4) + ... + (n-1)/(3^(n-2)) + n/(3^(n-1))) - (1/3 + 2/(3^2) + 3/(3^3) + 4/(3^4) + ... + (n-2)/(3^(n-2)) + (n-1)/(3^(n-1)))     

2006-10-251
161

((p 161) 세 번째 단락 첫째줄, [그림 9-2])

[그림 9-2]에서 출발점에서 

[그림 9-2] 화살 이야기      
==>
[그림 9-1]에서 출발점에서 

[그림 9-1] 화살 이야기      

2006-10-251
171

((p 171) 산포 구하기 다음 줄)

[그림 10-3]과 같이 5명의
      
==>
[그림 10-2]와 같이 5명의

2006-10-251
172

((p 172) 5,6 번째 줄)

5번째 줄과 6번째 줄의 위치가 바뀜
==>
표준편차(s)이 두 번째 박스 위로 가야 함    

2006-10-251
172

((P 172) 두 번째 예제 문제)

70, 85, 788,92, 80, 85
==>
70, 85, 78, 92, 80, 85
(788->78)

2006-10-251
174

((p 174) [표 11-1])

[표 11-1] 흰 쥐의 무게 데이터
==>
[표 10-1] 흰 쥐의 무게 데이터

2006-10-251
187

((p 187) 그림 11-3)

8
9
==>
7
8

2006-10-251
196

((p 196) 5번째 단락, [그림 12-4])

[그림 12-4]를 통해 살펴보자.

[그림 12-4] 원하는 난수를 만들기 위한 그래프
==>
[그림 12-3]을 통해 살펴보자.

[그림 12-3] 원하는 난수를 만들기 위한 그래프

2006-10-251
199

((p 199) [그림 12-5], 두 번째 단락)

[그림 12-5] 혼합 합동법에 의한 난수 생성 단계

[그림 12-5]의      
==>
[그림 12-4] 혼합 합동법에 의한 난수 생성 단계

[그림 12-4]의      

2006-10-251
204

((p.204) 3-4번째 줄)

이 방법은 - 갖고 있다.
==>
삭제, 앞 부분과 중복     

2006-10-251
214

((p 214) 두 번째 줄, [그림 13-7])

[그림 13-10]과 같이 가중 검사합을 계산한다.

[그림 13-7]
==>
다음과 같이 가중 검사합을 계산한다.

[그림 13-7] 가중 검사합 계산 -> 삭제

2006-10-251
231

((p 231) 세 번째 단락 둘째 줄위)

[그림 14-2]와 같고 -> [그림 14-1]과 같고      
==>
[그림 14-2]와 같고 -> [그림 14-1]과 같고     

2006-10-251
232

((p 232) 3, 5번째 단락)

[그림 14-4]와 같고 스위치 A

[그림 14-5]이다.
==>
[그림 14-3]과 같고 스위치 A

[그림 14-4]이다.

2006-10-251
233

((p 233) 세 번째 단락 첫째줄)

[그림 14-6]이다.
==>
[그림 14-5]이다.

2006-10-251
233

([그림 14-5])

[그림 14-5] OR 게이트 논리 기호
==>
[그림 14-5] NOT 게이트 논리 기호

2006-10-251
234

((p 234) 1, 4번째 단락)

[그림 14-7]이다.

[그림 14-8]이다.
==>
[그림 14-6]이다.

[그림 14-7]이다.

2006-10-251
235

((p 235) 중간,)

[그림 14-9]이다.
==>
[그림 14-8]이다.

2006-10-251
236

((p 236) 둘째줄)

[그림 14-10]과 같다.
==>
[그림 14-9]와 같다.

2006-10-251
236

((p 236) 예제문제 풀이 2))

AND 게이트 입력값 B = 0 
==>
B = 1

2006-10-251
241

((p241) 부울대수 기본공식)

1번 : X + 0 = X3 
==>
1번 : X + 0 = X

2006-10-251
244

((p244) 예제문제)

회로 그림 잘못됨
      
==>
                                     _  _
마지막 AND 게이트의 입력 변경 : A => A, C => C

2006-10-251
247

((p 247) 실행 결과)

$ a.out&#41966;
Programming Grains
Linux Programming Language
^&#41856;   입력 종료
capital letter: 5  small letter: 36
$  
==>
$ a.out&#41966;
Input year & month ==> 2020 2
Days = 29

2006-10-251
248

((p 248) [프로그램 14-3]설명하는 끝부분)

... printbit 함수는 초에
==>
... printbit 함수는 ch에

2006-10-251
269

(p269)

16 재귀호출 첫 페이지 사진

직□간접적
==>
16 재귀호출 첫 페이지 사진 -> 삭제 

직·간접적     

2006-10-251
276

((p 276) 네번째 문단)

이 수식을 함수로 나타내면 다음과 같은데, if 조건식인 n==1 이 참이면 1을 반환하고,
==>
이 수식을 함수로 나타내면 다음과 같은데, if 조건식인 n==0 이 참이면 1을 반환하고,     

2006-10-251
287

((p 287) 세번째 단락 첫째줄)

다음 표와 같다.

[표 17-1] 정렬 알고리즘 특징      
==>
다음과 같다.

[그림 17-1] 정렬 알고리즘 특징      

2006-10-251
294

(p 294 맨 마지막 그림, p 295 첫 번)

7 19 52 38 52 75 41       
==>
7 19 38 24 52 75 41

2006-10-251
295

(P 295 첫번째 그림)

7  19  38  24  52  41  75
==>
7  19  24  38  52  41  75

2006-10-251
296

((p 296) 선택 정렬에 예제)

데이터가 자리를 교환할 때 다음 데이터가 하나씩 뒤로 밀리는 걸로 설명됨
==>
선택 정렬은 전체 데이터중 가장 작은수를 찾은후 맨 앞에 있는 수와 교환한 후, 맨 앞에 가장 작은수를 제외한 데이터 중에서 작은수를 찾아 두째번 자리에 있는 수와 교환하는데 이 때 자리가 하나씩 밀리는 것이 아니라 원래 자리와 자리만 바뀜

2006-10-251
298

((p 298) [그림 17-8]에서)

두 번째 데이터 7 
==>
17로 바꾸어야 함     

2006-10-251
300

((p 300) [표 17-9])

[표 17-9] 퀵 정렬 결과
==>
[그림 17-9] 퀵 정렬 결과

2006-10-251
300

((p 300) 11단계 그림)

교환 전의 33과 26

==>
26과 33으로 변경     

2006-10-251
306

(p. 306)

- 첫번째 그림
버킷 [0]의 200 위에 380 위치
버킷 [2]의 312 -> 612
버킷 [3]의 380 삭제

- 아래
1단계 결과 200, 361, 612, 380, 254, 764, 485, 177, 39, 209
==>
1단계 결과 200, 380, 631, 612, 254, 764, 485, 177, 39, 209      
==>

2006-10-251
310

((p 310) 4단계와 5단계 그림)

4단계와 5단계의 그림이 바뀜
==>
4단계와 5단계의 트리 그림 서로 바꿈

2006-10-251
313

((p 313) 2단계 트리 (p 314) 3단계 트리)

트리 순서 바뀜   
==>
(2)단계와 (3)단계 트리 그림 서로 바꿈  

2006-10-251
328

((p 328) 첫번째 그림)

71의 음영 표시
      
==>
<음영 표시 변경>
69를 음영 표시

2006-10-251
331

((p 331) 아래에서 3줄)

[그림 18-8]과 같이
==>
[그림 18-7]과 같이

2006-10-251
331

((p331) (1) 1단계 박스 수식에서 분모)

16-12

==>
16-2

2006-10-251
344

((p 344) 세번째 문단 첫째줄)

예를 들어 +, 3, 5를 중위 표기로 나타내면 다음과 같고
==>
예를 들어 3, +, 5를 전위 표기로 나타내면 다음과 같고

2006-10-251
366

((p 366) 마지막 줄)

저장된다.]      
==>
저장된다.

2006-10-251
374

((p 374) delete 함수 전체)

delete 함수 전체
==>
다음과 같이 수정해야 합니다.

void delete (struct list **pptr, int data)
{
   struct list *ptr, *preptr;

   /* 리스트에 노드가 하나도 없는 경우 */
   if (*pptr == NULL) {
      printf("no data
");
   /* 삭제할 노드가 첫 번째 노드인 경우 */
   } else if ((*pptr)->data == data) {
      *pptr = (*pptr)->next;
   } else {
      preptr = *pptr;
      ptr = preptr->next;
      while (ptr!=NULL) {
         /* 삭제할 노드가 첫 번째 노드가 아닌 경우 */
         if (ptr->data == data) {
            preptr->next = ptr->next;
            free(ptr);
            return;
         } else {
            preptr = ptr;
            ptr = ptr->next;
         }
      }
      /* 삭제할 노드가 없는 경우 */
      printf("not found
");
   }
}     

2006-10-251
375

((p 375) 소스 코드)

if (pt->data == data) { /* 삭제할 노드가 없는 경우 */
    preptr->next = ptr->next;
    free(ptr);
} else {
    printf("Not found
");
}   
==>
<주석 위치 수정>
if (pt->data == data) {
    preptr->next = ptr->next;
    free(ptr);
} else {    /* 삭제할 노드가 없는 경우 */
    printf("Not found
");
}     

2006-10-251
387

((p 387) [그림 21-4])

[그림 21-4] 트리 구조
==>
[그림 21-3] 트리 구조

2006-10-251
400

((p 400) 중간)

[그림 21-15]과 같이
==>
[그림 21-15]와 같이

2006-10-251
408

((p 408) [프로그램 20-2])

소스 수정
==>
#include <stdio.h>
#include <stdlib.h>

 

struct node {
   int data;
   struct node *left_child;
   struct node *right_child;
};

typedef struct node treenode;
typedef treenode *tree_ptr;

 

void insert_node (tree_ptr *head, int key);
void delete_node (tree_ptr *head, int key);
tree_ptr search_node (tree_ptr head, int key);

 

main()
{
   tree_ptr ptr, temp;
   int select, data;
   ptr = NULL;

   while (1) {
      printf("select menu : 1.insert 2.delete 3.search 4.exit => ");
      scanf("%d", &select);
      if (select == 1) {
         printf("insert data => ");
         scanf("%d", &data);
         insert_node (&ptr, data);
      } else if (select == 2) {
         printf("delete data => ");
         scanf("%d", &data);
         delete_node (&ptr, data);
      } else if (select == 3) {
         printf("search data => ");
         scanf("%d", &data);
         if (temp = search_node (ptr, data))
            printf("%d
", temp->data);
      } else if (select == 4) {
         break;
      } else {
         printf("select error
");
      }
   }
}

 

/* key값의 노드를 삽입하는 함수 */
void insert_node (tree_ptr *head, int key)
{
   tree_ptr ptr1, ptr2, temp;
   /* 동적 메모리 할당 */
   temp = (tree_ptr)malloc(sizeof(treenode));
   temp->data = key;
   temp->left_child = NULL;
   temp->right_child = NULL;

   if((*head) == NULL) /* 첫 번째 노드면 */
      (*head) = temp;
   else {
      ptr1 = (*head);
      while (ptr1) { /* 삽입할 위치 탐색 */
         ptr2 = ptr1;
         if (key == ptr1->data) /* 같은 키가 있으면 삽입하지 않고 종료 */
            return;
         else if (key < ptr1->data)
            ptr1 = ptr1->left_child;
         else
            ptr1 = ptr1->right_child;
      }
      if (key < ptr2->data) /* 노드의 키보다 작으면 왼쪽 자식 노드로 삽입 */
         ptr2->left_child = temp;
      else /* 노드의 키보다 크면 오른쪽 자식 노드로 삽입 */
         ptr2->right_child = temp;
   }
}

 

/* key값의 노드를 삭제하는 함수 */
void delete_node (tree_ptr *head, int key)
{
   tree_ptr parent, son, temp1, temp2;
   parent = (*head);
   son = (*head);
   while (son!=NULL && son->data!=key) {
      parent = son;
      if (key < son->data)
         son = son->left_child;
      else
         son = son->right_child;
   }
   if (son==NULL) {
      printf("Not found
");
      return;
   } else
      temp1 = son;

   if (temp1->right_child==NULL && temp1->left_child==NULL) /* 첫 번째 경우 */
      son = NULL;
   else if (temp1->right_child==NULL) /* 두 번째 경우 */
      son = temp1->left_child;
   else if (temp1->right_child->left_child == NULL) { /* 세 번째 경우 */
      son = temp1->right_child;
      son->left_child = temp1->left_child;
   } else { /* 네 번째 경우 */
      temp2 = son->right_child;
      while (temp2->left_child->left_child != NULL)
         temp2 = temp2->left_child;
      son = temp2->left_child;
      temp2->left_child = son->right_child;
      son->left_child = temp1->left_child;
      son->right_child = temp1->right_child;
   }
   free(temp1);
   if (key == parent->data)
      (*head) = son;
   else if (key < parent->data)
      parent->left_child = son;
   else 
      parent->right_child = son;
}

 

/* head가 가리키는 트리에서 key값의 노드를 탐색하는 함수 */
tree_ptr search_node (tree_ptr head, int key)
{
   tree_ptr temp;
   temp = head;
   while (temp) {
      if (key == temp->data) /* 탐색에 성공하면 해당 노드를 반환 */
         return temp;
      /* 노드의 키보다 작으면 왼쪽 서브 트리를 탐색하도록 설정 */
      if (key < temp->data) 
         temp = temp->left_child;
      else /* 노드의 키보다 크면 오른쪽 서브 트리를 탐색하도록 설정 */
         temp = temp->right_child;
   }
   printf("Not found
");
   return NULL; /* 탐색에 실패하면 NULL반환 */
}

2006-10-251
410

(p 410, p 411)

p410과 p411 소스
==>
p410과 p411 소스 차례 바뀜     

2006-10-251
421

((p 421) 끝에서 4줄,)

[그림 22-4]와 같이
==>
[그림 22-3]과 같이

2006-10-251
423

((p 423) 네번째 단락 셋째줄)

[그림 22-7]에서
==>
[그림 22-6]에서 

2006-10-251
424

((p 424) 네번째 단락)

[그림 22-9]는[그림 22-8]의
==>
[그림 22-10]은 [그림 22-9]의

2006-10-251
425

((p 425) 세번째 단락)

[그림 22-11]은 [그림 22-10]의
==>
[그림 22-12]는 [그림 22-11]의

2006-10-251
426

((p 426) 세번째 단락)

[그림 22-12]는
==>
[그림 22-14]는

2006-10-251
439

((p 439))

[프로그램 22-1]
==>
[프로그램 22-2]     

2006-10-251
440

((p 440) 소스 맨 위)

소스 누락
==>
다음 코드 추가

typedef struct node *node_ptr;

struct queue {
   int data;
   struct queue *next;
};

2006-10-251
462

((p 462) 둘째 박스)

k2 = 1243972900
==>
k^2 = 1243972900

2006-10-251
464

(p. 464 [그림 23-8] 위 부분)

어떠한 값에도 편중되지 않음을 확인할 수 있고 결국 해시 주소는 110011012이다.
==>
어떠한 값에도 편중되지 않음을 확인할 수 있고 결국 해시 주소는 11001101이다.
     

2006-10-251
470

((p470) 밑에서 세번째 줄)

i2

==>
i^2     

2006-10-251
473

((p 473) 두번째 단락)

[그림 23-23]의       
==>
위 그림에서

2006-10-251
474

((p 474))

[그림 23-25]와 

[그림 23-25] 컴파일러 구조

[그림 23-26]의

[그림 23-26] 원시 프로그램의 예

[그림 23-27] 원시 프로그램의 토큰들
==>
[그림 23-22]와 

[그림 23-22] 컴파일러 구조

[그림 23-23]의

[그림 23-23] 원시 프로그램의 예

[그림 23-24] 원시 프로그램의 토큰들

2006-10-251
476

((p 476))

[그림 23-28]과 같이 노드 하나를

[그림 23-29]와 같이 저장된다.
==>
다음과 같이 노드 하나를

다음과 같이 저장된다.

2006-10-251
477

((p 477))

[그림 23-30]과 같이 저장된다.      
==>
다음과 같이 저장된다.     

2006-10-251
478

((p 478))

[그림 23-32]와 같이 저장된다.
==>
다음과 같이 저장된다.

2006-10-251
479

((p 479))

[그림 23-35]와 같이 줄 번호 4를
==>
다음과 같이 줄 번호 4를

2006-10-251
485

((p 485) 네째줄)

휴리스틱틱
==>
휴리스틱

2006-10-251
490

((pp. 490-496) 모든 그림)

상태8 
4 1 3 2 5 6 7 8 _

상태9
4 1 3 2 5 6 7 8 _

상태10
4 1 3 2 5 6 _ 7 8

상태12
4 1 3 2 5 6 _ 7 8
==>
상태8 
4 1 3 2 5 _ 7 8 6

상태9
4 1 _ 2 5 3 7 8 6

상태10
4 1 3 2 _ 5 7 8 6

상태12
4 3 _ 2 1 6 7 5 8     

2006-10-251
497

((p. 497) 밑에서 두번째 문단)

h(N)은 현재 노드에서 목표 노드에, h(N)은 현재 노드에서 목표 노드에 이르는 추정 비용이다.     
==>
h(N)은 현재 노드에서 목표 노드에 이르는 추정 비용이다.

2006-10-251
499

((pp. 499-503) 모든 그림)

상태8 
4 1 3 2 5 6 7 8 _

상태10
4 1 3 2 5 6 _ 7 8
==>
상태8 
4 1 3 2 5 _ 7 8 6

상태10
4 3 _ 2 1 6 7 5 8     

2006-10-251
509

((p 509) [그림 24-16])

[그림 24-16] B4 노드와 B5 노드 잘라버림
==>
[그림 24-16] B4 노드와 B5 노드 잘라버림 -> 삭제

2006-10-251