昨天看CSDN的一个文章提到,某公司面试时问到单向链表的反转问题,有好多程序员答不出来。以前我也没做过类似的题目,试着写了一下。
问题描述:已知一个单向链表,写一个函数,使得该链表的方向反转,即头变尾,尾变头,指示方向相反。
分析:该问题可以有两种方法,一是交换首尾两个节点的数据,而不改变其内存的存储结构,二是改变所有节点的指向下一个节点的指针。显然第二种方法更加有效。
运行结果:
before reverse:
list=0
list=1
list=2
list=3
list=4
list=5
list=6
list=7
list=8
list=9
list=10
after reverse:
list=10
list=9
list=8
list=7
list=6
list=5
list=4
list=3
list=2
list=1
list=0