# -*- coding:utf-8 -*-"""
Author: leadingme
Mail:[email protected]
MyWebsite:leadingme.top
"""# 翻转链表"""
算法要求: 翻转一个单链表(不带头节点)
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
"""defreverseLinkList(head):"""
:param head:
:return:head
"""
valList =[]
pointer = head
while pointer:# 将链表的值依次取出
valList.append(pointer.val)
pointer = pointer.next
pointer = head
while valList:# 将列表的值反向赋给链表的每个节点的val属性
pointer.val = valList.pop()
pointer = pointer.nextreturn head
进阶方法:
defreserveLinkList2(head):"""
:param head:
:return: head
"""if head isNone:# 链表为空returnNone
Pre = Next = head
if Next.nextisNone:# 链表只有一个头节点return head
else:
Pre =Nonewhile Next isnotNone:# 详细图解可参考下方链接
Next = Next.next
head.next= Pre
Per = head
head = Next
return head