【算法训练】剑指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
posted @ 2022-01-18 17:54  小拳头呀  阅读(31)  评论(0编辑  收藏  举报