题目:
方法一:
考察链表的操作和遍历
新建一个链表
创建一个头节点,头节点不用来储存数据,只用指针域
然后每次将原始链表的元素插入新链表的头节点后的位置
最后返回主链表
结束
# 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