反转链表
反转链表有很多种方式,今天学到了一种,来记录一下。希望以后多多进步。
先来讲一下思路:
如图,当前有一个链表,除了头节点,有三个节点,我们需要将这三个节点反转。
首先我们需要遍历这个链表,每遍历一个就把它插到下面的链表的最头部,这样遍历结束也就完成了反转。这里特别需要注意的是,每遍历一个节点,我们需要放在下面链表的最前面,代码实现的时候,放在最前面就和链表插入节点一样。
这样讲还是比较抽象,我这块也理解了半天。
还是看程序吧!
代码最重要的就是78到81行的四行程序,
第一步,我们需要保存当前节点的下一个节点,不然不保存,链表就会断了;
第二步和第三步要合在一起看,是不是和给链表中间插一个节点很像啊,对啊,我们就是要把当前的节点查到新链表的首部,新链表的首部左边是头节点,右边是原来链表的第一个节点,插到这两个节点中间就需要这两行代码进行操作。
第三步,就是对原来的节点的下一个节点进行操作,所以当前节点就变成了下一个节点了。
如果有什么不对的地方,请各位大佬批评指正。