今天老师检查的时候说如果一个链表为空就是(while(scanf())死循环)的情况,我当时有点懵,因为文档里强调为空的情况。还好老师叫我自己现场实现一下,
当时想了两个方案:
*一是用getchar()接受第一个回车(我设定的输入回车结束),如果用户第一个键盘输入就是回车,它能工作的很好。
但是当第一个键盘输入不是一个回车的时候,就遇到一个问题:getchar()会吃掉第一个数字的一部分,之所以说一部分是因为经过我测试发现:
Getchar()能返回的值最大为57,这显然是不合理的。
于是我想到了第二个方法:
*先用getchar读取,如果getchar读取的不是回车,就将它重新放回缓冲区,再又scanf()函数来读取。但是这个方案有点麻烦,还要区查资料,搞明白怎么将读取的数据重新放回缓冲区。好的是在我采取这个方案之前我想到了更好的办法:
第三个办法:
*将结尾判断改一下直接上图&#x