前些天在CSDN上看到一篇老外公司招程序员的报道,说想招到会写程序的人真是很难,许多来应聘的人连单链表反转也写不出来,我就想自己试一下。就像很多算法一样,单链表反转思路挺简单,但是要写出没有明显漏洞的代码还是需要一段时间的。
单链表反转的基本思路有两种:
1)反转节点的指针next;
2)直接反转节点,每次拿到一个节点,都插入到连表最前端。
第一种方法的代码如下:
第二种方法的代码如下:
两种算法的代码看上去很像,不过还是有本质的区别:方法一中pCur一直在向尾节点遍历,而方法二中的pCur则一直保持不变,这也体现了两种算法的不同之处。当然,算法的实现也可以有别的写法,并不局限于这里。