【算法训练】剑指offer#24 反转链表
一、描述
反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例 :
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
二、思路
- 先遍历整个链表,然后将所有的值存入list,再倒转list新建链表
这样效率和内存占用应该都不行,但是能过...
三、解题
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
valList = [] # 存储链表的val
if head is None:
return head
else:
# 将链表中的值存入valList
valList.append(head.val)
while head.next:
head = head.next
valList.append(head.val)
# 新的头节点
newHead = ListNode(valList[-1])
del valList[-1]
# 新的链表
newList = newHead
# 反向遍历
for val in valList[::-1]:
newNode = ListNode(val)
newHead.next = newNode
newHead = newHead.next
return newList