题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点,链表节点定义如下:
class ListNode: def __init__(self, x): self.val = x self.next = None
思路一:新建一个链表,利用头插法反转该链表
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
p1=ListNode(0)
p=pHead
while p!=None:
q=p.next
p.next=p1.next
p1.next=p
p=q
return p1.next
思路二:三个指针在链表上同时滑动。
# -*- coding:utf-8 -*- class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: # 返回ListNode def ReverseList(self, pHead): head=pHead pre=None reversehead=None while head!=None: q=head.next if head==None: reversehead=head head.next=pre pre=head head=q return reversehead