剣指offer面接問題6:末尾からチェーンテーブルを印刷(python実装)


チェーンテーブルを末尾から印刷(python実装)
一、テーマの説明
タイトル:チェーンテーブルのヘッダノードを入力し、末尾から各ノードの値を逆に印刷します.
実は、このチェーンテーブル操作では、最初から最後まで印刷するには簡単な遍歴が必要です.しかしながら、ここでは、遍歴の順序は最初から最後までであり、印刷の順序は最後から最後までであり、これが典型的な「先進後出」であるため、スタックまたは再帰的に実現することができる.
二、問題を解く構想
  暫略.(ここでは主に本のpythonとして補完する)
三、コード実装
次のようにpythonで簡単にチェーンテーブルを実現します.チェーンテーブルのより多くの操作python実装については、一方向チェーンテーブルの作成と基本操作を参照してください.
class LinkedListNode(object):
    def __init__(self,next=None,value=None):
        self.next = next
        self.value = value
#                
#              ,  ,         ,            
pHead = LinkedListNode()
myList = [1,2,3,4,5,6,7,8,9]
for i in range(len(myList)):
    pHead = LinkedListNode(pHead,myList[i])

以上にチェーンテーブルが新設され、その遍歴順序は:9 8 7 6 5 4 3 1である.
次に、チェーンテーブルをエンドから印刷する2つの方法が実現される.
1スタック:
def printLinkedListReversingly_stack(pHead):
    if pHead.value==None:
    return False
    tempList = []
    while pHead.value:
        tempList.append(pHead.value)
        pHead = pHead.next
    while tempList:
        print(tempList.pop())
>>> printLinkedListReversingly_stack(pHead)
Out:
1
2
3
4
5
6
7
8
9

  2再帰:
def printLinkedList(pHead):
    if pHead.value==None:
        return False
    printLinkedList(pHead.next)
    print(pHead.value)
>>> printLinkedList(pHead)
Out:
1
2
3
4
5
6
7
8
9