24. 反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
解题思路:
- 链表特点:只能一个方向访问每个节点
- 通过建立两个指针改变每个节点的指向
算法流程:
- 申请两个节点,pre和cur,pre最初指向None,cur指向head
- 遍历每个节点,调整每个节点的指向并且pre和cur不断前进
复杂度分析:
- 空间复杂度:O(n)
- 时间复杂度:O(1)
代码实现:
class Solution(object):
def reverseList(self, head):
#申请两个节点,pre和cur,pre最初指向None
pre = None
cur = head
#遍历节点
while cur:
# 记录当前节点的下一个节点
tmp = cur.next
# 然后将当前节点指向pre
cur.next = pre
# pre和cur节点都前进一位
pre = cur
cur = tmp
return pre