为了准备找工作,买了本《程序员面试宝典》看看,结果发现这本书里面错漏的地方实在是太多了。记录一下,希望对后来的人有所帮助。

1.184页,“面试官会节和程序对你的思维能力进行考量。”中“节”字写错,应改为“结”。

2.185页,面试例题2:编程实现单链表删除节点。但是给的示意图却是插入节点的过程。在面试例题3中,该图又重复了一遍。

3.189页,面试题7,给的代码是解决例题6的代码。

4.192页,循环链表面试题答案代码倒数第12行

for(int s=m-1;s--;r=p,p=p->link);

应将s=m-1改为s=m-k,即:

for(int s=m-1;s--;r=p,p=p->link);

5.237页,面试例题1第6行代码

intnum=12345,j=0,i=0;

少了一个空格应改为:

int num=12345,j=0,i=0;

6.238页,第10行代码

printf("interger = %d string = %c\n",num,string[1]);

不知道这里输出string[1]有什么意义,改成下面这样比较好,输出整个字符串。

printf("interger = %d string = %s\n",num,string);

7.239页,例题2解析中有一句

...原来是1234\0123456789\0,strcpy后变成了123456789\06789\0,...

多了4和6,应该改为:

...原来是123\0123456789\0,strcpy后变成了123456789\0789\0,...”。

8.241页,第4行代码

if((array(int *)malloc(10*sizeof(int)))==NULL);

少了一个“=”,应改为:

if((array=(int *)malloc(10*sizeof(int)))==NULL);

在解析当中,同样缺少一个“=”。

9.241页,代码片有3点错误,1)malloc()函数前面缺少类型。2)free(p2)应该改为free(p1)。3)free之后,指针没有置NULL。

int *p1,*p2;
p1=malloc(10*sizeof(int));
p2=p1;
...
free(p2)    /*或者free(p2)*/

应改为:

int *p1,*p2;
p1=(int*)malloc(10*sizeof(int));
p2=p1;
...
free(p1)    /*或者free(p2)*/
p1=p2=NULL;

10.242页,面试例题3解析当中,第三行Strcpy首字母不能大写,应该改为strcpy。

(未完待续)