定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 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)