剣指offer面接問題05----チェーンテーブルを最初から最後まで印刷する
1091 ワード
タイトル:チェーンテーブルを入力し、チェーンテーブルの各ノードの値を末尾から印刷します.リストが空の場合は[]を出力します.
思考:面接ではチェーンテーブルに関する問題が多く、これは比較的簡単なもので、まずチェーンテーブルノードのクラスを定義し、チェーンテーブルを構築する必要があります.チェーンテーブルの値を最初から最後まで印刷するのは簡単で、直接順番に印刷すればいいことを知っています.しかし一方向チェーンテーブルについては、逆方向に印刷しようとするとポインタを戻すこともできないので、チェーンテーブルの要素を順番に1つのリストに保存し、最後にリストの要素を逆方向に出力すればよい.
Pythonコードは以下の通りです
PS:リストを遍歴する際に境界を越えることを避けるためにlistNodeを判断することができることに注意する.nextが存在するか否かを終了条件PS 2:ls[::-1]としてリスト反転を実現できる
思考:面接ではチェーンテーブルに関する問題が多く、これは比較的簡単なもので、まずチェーンテーブルノードのクラスを定義し、チェーンテーブルを構築する必要があります.チェーンテーブルの値を最初から最後まで印刷するのは簡単で、直接順番に印刷すればいいことを知っています.しかし一方向チェーンテーブルについては、逆方向に印刷しようとするとポインタを戻すこともできないので、チェーンテーブルの要素を順番に1つのリストに保存し、最後にリストの要素を逆方向に出力すればよい.
Pythonコードは以下の通りです
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
# , [1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
ls = []
if listNode is None:
return ls
while listNode.next:
ls.append(listNode.val)
listNode = listNode.next
ls.append(listNode.val)
return ls[::-1]
s = Solution()
l1 = ListNode('a')
l2 = ListNode('b')
l3 = ListNode('c')
l1.next = l2
l2.next = l3
print s.printListFromTailToHead(l1)
# ['c', 'b', 'a']
PS:リストを遍歴する際に境界を越えることを避けるためにlistNodeを判断することができることに注意する.nextが存在するか否かを終了条件PS 2:ls[::-1]としてリスト反転を実現できる