题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
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个节点,使用三个指针分别指向当前节点,前一个节点和后一个节点,每次前进一步,反转后两个指针所指的节点,最后返回尾结点