一个小小的面试题记录
题目要求:给定一个有头节点的单链表,对其进行反转,使顺序变成由后到前的链表
问题分析:
首先我们给出一个单链表如下图,头节点head指向第一个节点,第一个节点的值是value1,指针指向第二个节点,第二个节点类似,第三个节点是最后一个节点,只有一个值value3,没有下一个节点,所以指针为空。
我们要做的是把它进行一个反转,所以首先建立一个新的头节点,用来存放已反转的节点。
初始化时它指向空。
然后我们对原先 的链表进行一个 遍历
建立两个辅助指针(变量),cur表示当前所遍历到的节点,next表示当前节点的下一个节点。
比如遍历第一遍时,cur是节点1,next是节点2
下面这步是算法重点,我们要开始进行反转了
第一步,cur.next = reverseHead.next
,这一步的意思是,把reverse_head的指针指向的位置赋值给当前的节点,也就是现在节点1指向空了
第二步