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个节点,使用三个指针分别指向当前节点,前一个节点和后一个节点,每次前进一步,反转后两个指针所指的节点,最后返回尾结点

posted @ 2019-08-14 20:05  尘世中一个迷途小书童  阅读(108)  评论(0编辑  收藏  举报