ここにコードです。 ispalindromeの頭とダミーノードは、逆関数を呼び出した後に変更されます。これが起こる理由は何ですか?私は、頭が変わらない同じことをする最中に事件がある。逆関数を呼び出すと、頭が下にあるケースと対立するのはなぜですか?私はnoneエラーを受け取ります
class ListNode(object):
def __init__(self,x):
self.val=x
self.next=None
def reverse(head,l):
prev=None
while head:
head.next,prev,head=prev,head,head.next
l+=1
return (prev,l)
def isPalindrome(head):
dummy=head
rev,l=reverse(head,0)
print (rev.val,dummy.next.val)
a=ListNode(1)
a.next=ListNode(2)
isPalindrome(a)
私は私のロジックをテストするためにここに似た何かをした、これは私が判明する私のコードを想像方法です:私は逆呼び出すと、私はまだ頭とそれに割り当てられたB変数にアクセスすることができます。あなたはdummy
元の頭を格納し、リストを逆に最初のバージョンで
class ListNode(object):
def __init__(self,x):
self.val=x
self.next=None
a=ListNode(1)
a.next=ListNode(2)
b=a
def reverse(head,l):
prev=None
while head:
head.next,prev,head=prev,head,head.next
l+=1
return (prev,l)
rev,l=reverse(a,0)
print b.val,rev.val
ダミーが最初のノードを指しているときに最後のノードになるのはなぜですか? 2番目の例のように、b = aここでaは頭です。ケースは私とほとんど同じですが、私はまだ理解しません。 2番目のパラグラフ「リンクへのアクセス」の意味を説明できますか?私は第2のケースでも頭を逆転させている。 – Haxet
@Haxet **最初のノードを指していたので、リストが逆転しました。 'reverse'を使ってリストを逆順にすると、同じノードが逆順リストの最後になります。 2番目の例では、あるノードから別のノードへナビゲートしようとしていないので、 'reverse'は' ListNode'の 'next'プロパティを変更するだけで、' val'も変わりません。 – niemmi