pythonは反転部分の一方向チェーンを実現します。


タイトル:
シングルチェーンテーブルのヘッドポインタheadと2つの整数aとbを指定して、シングルチェーンテーブルでlinked_を反転させます。リスト[a-b]の結点は、チェーン全体の頭ポインタに戻ります。
たとえば:
シングルチェーン表[1000,5,12,100,45,‘cecil’,999]
a=4,b=6,
戻ってくるチェーンは[1000,5,12,100,999,cecil]で、つまり、
aとbはそれぞれ索引値である。aとbがインデックス範囲を超えたらエラーを返します。
コード:
私が書いたのは簡潔ではなく、煩わしいですが、走り通すことができます。煩雑な原因はforサイクルを使ったことです。a==0の場合はforサイクルが認識できません。

  def reverse_part_linked_list(head, a, b): #         ,a, b      
    if head == 0:
      print "Empty linked list. No need to reverse."
      return head
    p = head
    length = 1
    while p != 0:
      length += 1
      p = p.next
    if length == 1:
      print "No need to reverse."
      return head
    if a < 0 or b > length-1 or a >= b:
      raise Exception("The given 'from' value and 'to' value is wrong.")
    p = head

    if a == 0: #    for     xrange      ,       。
      tail, head = p, p
      pre = 0
      for _ in xrange(a, b+1):
        p = p.next
        head.next = pre
        pre = head
        head = p
      tail.next = p
      return head
    else:
      for _ in xrange(1, a):
        p = p.next
      front, tail, head = p, p, p
      p = p.next
      pre = 0
      for _ in xrange(a+1, b+2):
        p = p.next
        head.next = pre
        pre = head
        head = p
      front.next = pre
      tail.next = p
      return head
分析:
コアは依然として反転チェーンテーブルの針の問題であり、全てのサイクルであり、時間複雑度o(n)であり、空間複雑度はいくつかの変数である。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。