题目描述
输入一个链表,反转链表后,输出新链表的表头。
思路
- 创建一个结点prehead用来保存当前结点的前结点
- 先将当前结点的下一个结点保存起来,以免断链时找不到后续的结点
- 当前结点与下一个结点断开,回指前一个结点
- 前一个结点后移
- 当前结点后移
# -*- 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
if not pHead:
return None
prehead=None
while pHead:
temp=pHead.next
pHead.next=prehead
prehead=pHead
pHead=temp
return prehead
测试用例
if __name__=='__main__':
s=Solution()
head=ListNode(1)
phead=head
data=[2,3,4,5,6,7]
for i in data:
node=ListNode(i)
phead.next=node
phead=phead.next
head=s.ReverseList(head)
while head:
print(head.val),
head=head.next