24-反转链表
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
def reverse_list(head): if not head or not head.next: return head rear = head p = head.next if p.next == None: p.next=rear rear.next=None return p front = p.next rear.next=None while front: p.next=rear rear = p p = front front = front.next p.next=rear return p
注:
分三种情况:
1、链表头节点为空或只有一个节点,此时直接返回头节点即可
2、链表只有两个节点,此时只要反转一次,然后返回尾结点即可
3、大于等于3个节点,使用三个指针分别指向当前节点,前一个节点和后一个节点,每次前进一步,反转后两个指针所指的节点,最后返回尾结点