题目:
![](https://i-blog.csdnimg.cn/blog_migrate/f3058c732adff33536d847b0f94df3a3.png)
方法一:
考察链表的操作和遍历
新建一个链表
创建一个头节点,头节点不用来储存数据,只用指针域
然后每次将原始链表的元素插入新链表的头节点后的位置
最后返回主链表
结束
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head or not head.next:
return head
new_head = ListNode(None)
while head:
temp = new_head.next
new_head.next = ListNode(head.val)
new_head.next.next = temp
head = head.next
return new_head.next
方法二:
第二种方法首先创建一个新的list
然后将原始链表中的value全部遍历进新的list中
然后每次取list中的最后一个值,放进链表中
更新链表后返回
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head or not head.next:
return head
node = head
temp = []
while node:
temp.append(node.val)
node = node.next
node = head
while temp:
node.val = temp.pop()
node = node.next
return head