剑指offer:反转链表
原创
©著作权归作者所有:来自51CTO博客作者小怡情ifelse的原创作品,请联系作者获取转载授权,否则将追究法律责任
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
class LinkNode():
def __init__(self):
self.value = None
self.next = None
class Solution():
def creatLink(self) -> LinkNode:
node1 = LinkNode()
node1.value = 1
node1.next = None
node2 = LinkNode()
node2.value = 2
node2.next = node1
node3 = LinkNode()
node3.value = 3
node3.next = node2
return node3
def reverseLink(self, head:LinkNode) -> LinkNode:
if head is None: return None
list = []
while(head != None):
list.append(head)
head = head.next
head = list.pop()
cur = head
while(list):
cur.next = list.pop()
cur = cur.next
cur.next = None
return head
solu = Solution()
head = solu.creatLink()
newHead = solu.reverseLink(head)
print(newHead)
时间复杂度:O(n)
空间复杂度:O(1)