剣指offer面接問題6:末尾からチェーンテーブルを印刷(python実装)
6781 ワード
チェーンテーブルを末尾から印刷(python実装)
一、テーマの説明
タイトル:チェーンテーブルのヘッダノードを入力し、末尾から各ノードの値を逆に印刷します.
実は、このチェーンテーブル操作では、最初から最後まで印刷するには簡単な遍歴が必要です.しかしながら、ここでは、遍歴の順序は最初から最後までであり、印刷の順序は最後から最後までであり、これが典型的な「先進後出」であるため、スタックまたは再帰的に実現することができる.
二、問題を解く構想
暫略.(ここでは主に本のpythonとして補完する)
三、コード実装
次のようにpythonで簡単にチェーンテーブルを実現します.チェーンテーブルのより多くの操作python実装については、一方向チェーンテーブルの作成と基本操作を参照してください.
以上にチェーンテーブルが新設され、その遍歴順序は:9 8 7 6 5 4 3 1である.
次に、チェーンテーブルをエンドから印刷する2つの方法が実現される.
1スタック:
2再帰:
一、テーマの説明
タイトル:チェーンテーブルのヘッダノードを入力し、末尾から各ノードの値を逆に印刷します.
実は、このチェーンテーブル操作では、最初から最後まで印刷するには簡単な遍歴が必要です.しかしながら、ここでは、遍歴の順序は最初から最後までであり、印刷の順序は最後から最後までであり、これが典型的な「先進後出」であるため、スタックまたは再帰的に実現することができる.
二、問題を解く構想
暫略.(ここでは主に本の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