题目描述:输入一个链表,反转链表后,输出新链表
链表与数组不同,每个结点除数据区外,还存在一个指针区,用来存放下一个结点的地址。
因此,单链表的访问只能从头开始访问。
在对链表操作中,需要注意修改结点指针区时,需要记录下来后继结点的位置,否则会丢失后继结点。
方法:就地逆序
给定链表 1-->2-->3-->4-->5-->None
反转链表 5-->4-->3-->2-->1-->None
思路:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
cur = pHead
pre = None
while cur.next is not None:
lat = cur.next
cur.next = pre
pre = cur
cur = lat
lat = cur.next
cur.next = pre
return cur
这么写,程序会报错。错误提示:
您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为66.67%
用例:
{}
对应输出应该为:
{}
你的输出为:
'NoneType' object has no attribute 'next'
可以看出当链表为空时,cur.next 不存在,改进代码
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
cur = pHead
pre = None
while cur is not None:
lat = cur.next
cur.next = pre
pre = cur
cur = lat
return pre
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。