一方向チェーンテーブルの後ろ-pythonコード


自分で半日考えてやっと分かったので、記録して、いつでも振り返ります.
ノードクラスを定義するには
class Node():
    def __init__(self, cargo=None, next=None):
        self.cargo = cargo
        self.next = next

    def __str__(self):
        #  , 
        return str(self.cargo)

ノードを定義してチェーンテーブルを定義します.
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
#  
node1.next = node2
node2.next = node3

最初のノードを入力してチェーンテーブル全体をループし、チェーンテーブル全体を順番に印刷します.
def printList(node):
    while node:
        print node
        node = node.next
        
printList(node1)
1
2
3

再帰的な方法で印刷するには、次のようにします.listを2つの部分に分割し、head:最初の要素、tail:残りの要素2.後ろに印刷3.最初の要素を印刷
''' 
     printBackward(1) printBackward(2), printBackward(3), printBackward(None).
     printBackward(None),return printBackward(3) print (head, tail).
     printBackward(3) , printBackward(2), printBackward(1), .
'''
def printBackward(lists):
    if lists == None:
        return          '''return , '''
    head = lists
    tail = lists.next
    print(head, tail)

    printBackward(tail)  ''' '''
    print(head, tail)

printBackward(node1)
1 2
2 3
3 None
3 None
2 3
1 2

より簡単な逆出力方法:
def printBackward(lists):
    if lists == None:return
    printBackward(lists.next)
    print lists
printBackward(node1)
3
2
1

黒板をたたく:
printBackward(1)からprintBackward(2)にジャンプし、printBackward(3)にジャンプしてprintBackward(None)に入ります.printBackward(None)を実行し、return後にprintBackward(3)に戻ってもまだ終わっていないので、最後の行のprint(head,tail)を実行し続けます.printBackward(3)が終了すると、printBackward(2)に戻り、printBackward(1)に戻り、関数の実行を終了します.
原文リンクはこちらです.
参照先:https://blog.csdn.net/qq_39422642/article/details/78988976#:~:text=python%EF%BC%9A%E9%93%BE%E8%A1%A8%E5%AE%9A%E4%B9%89%E4%BB%A5%E5%8F%8A%E5%AE%9E%E7%8E%B0,%E4%B8%8B%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E9%93%BE%E6%8E%A5.