反转链表,又可以称为翻转或逆置链表,它们表达的是同一个意思。以图 1 所示的链表为例
经过反转(翻转、逆置)后,得到的新链表如图 2 所示:
通过对比图 1 和 图 2 中的链表不难得知,所谓反转链表,就是将链表整体“反过来”,将头变成尾、尾变成头。那么,如何实现链表的反转呢?常用的实现方案有 4 种,这里分别将它们称为迭代反转法、递归反转法、就地逆置法和头插法。值得一提的是,递归反转法更适用于反转不带头节点的链表;其它 3 种方法既能反转不带头节点的链表,也能反转带头节点的链表。
将以图 1 所示,即不带头节点的链表为例,给大家详细讲解各算法的实现思想。
1、迭代反转链表
该算法的实现思想非常直接,就是从当前链表的首元节点开始,一直遍历至链表的最后一个节点,这期间会逐个改变所遍历到的节点的指针域,另其指向前一