定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
我的解法是这样的:
- 先遍历链表所有元素,将这些元素添加进入lst,
- 初始化一个固定头节点res和一个指针p,p的初值就是res
- 只要lst列表不为空,就将lst中的元素弹出赋值给p指向的节点,紧接着判断列表是否为空,如果不为空,就初始化p.next,并把p.next赋值给p;如果列表lst为空,就讲p.next设置为None
- while循环不断进行,直到lst为空
关键在于设置一个可以移动的指针,它会随着while循环,不断向后移动
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head:
# 返回空节点,return []是错的,因为[]不是ListNode类型
return None
lst = list()
res = ListNode()
p = res
while head:
lst.append(head.val)
head = head.next
#lst.reverse()
while lst:
p.val = lst.pop()
if lst:
p.next = ListNode()
p = p.next
else:
p.next = None
return res