如果你看到标题就知道我在说什么,那么出门左拐,自己动手写一下伪代码。
只有自己亲手写出和画出,才能更好的掌握。
现在有一个链表,Head指向头
然后使用temp保存Head中原来含有的结点的第一个结点,此时p指向第一个待插入结点
此时将head尾部置空
将 p 加入head头部,然后 p 后移一位。往复多次,直到 p 空
1 def reverse(self): #头插法原地逆转链表 2 p = self.head #p指向工作结点 3 self.head = None #将头指针看做一个空空的干净的头指针 4 while p: 5 temp = self.head #保存头指针已经保存了的后续结点的第一个结点 6 self.head = p #将新结点头插法接到头指针上 之后的步骤不能反过来哦,否则结果不是预期的结果 7 p = p.Next # STEP 1 :先将工作指针 p 后移到下一位 8 self.head.Next = temp # STEP 2 :然后再把原来的 head 的后面的结点 temp 连接到新加入的结点后面 9 #注:STEP 1 和STEP 2 务必不要颠倒 因为如果先执行 self.head.Next = temp 那么 p 的next就会变成 temp 是吧(你品品)