程序员面试宝典(第五版)里的错误
为了准备找工作,买了本《程序员面试宝典》看看,结果发现这本书里面错漏的地方实在是太多了。记录一下,希望对后来的人有所帮助。
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。
(未完待续)