题目描述
输入一个链表,反转链表后,输出新链表的表头。
头插法
如果头结点不为空,那么遍历头结点。
首先用一个指针记录后面的结点,防止链表断开。
然后将头结点指向空,用一个指针记录指向空结点的指针,这是已经反转的部分。最后使遍历结点回到防断开的链表结点。
python代码
需要注意的是,如果不是在特定的编辑器练习代码,是需要自己定义链表结点的,有时候面试实在会想不起来,将链表结点定义为一个类,然后进行初始化。
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
反转链表:
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
if not pHead or not pHead.next:
return pHead
pre = None
nxt = None
while pHead:
nxt = pHead.next
pHead.next = pre
pre = pHead
pHead = nxt
return pre
算法还是要手感,一段时间不练就会生疏,知道算法思想跟完全写对代码是两回事儿。