1. 程式人生 > >python-5. 從尾到頭列印連結串列

python-5. 從尾到頭列印連結串列

題目描述:

  • 輸入一個連結串列的頭結點,從尾到頭反過來打印出每個結點的值。連結串列結點定義如下:
struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
}

解題思路:

  • method_1:
    • 利用棧的先進後出的特點,從頭遍歷連結串列的同時將結點的值入棧,最後依次彈出棧中的元素即可。
    • 可以藉助python中的list實現棧
  • method_2:
    • 通過遞迴實現:訪問到一個節點的時候,先遞迴輸出它後面的節點,再輸出該節點自身
    • 相對簡潔,但是當連結串列非常長的時候,會導致函式的呼叫的層數很深,引發函式呼叫棧溢位
class
Node:
def __init__(self, val): self.val = val self.next = None class Solution: def __init__(self): pass def revereList_Iterative(self, headNode): stack = [] while headNode != None: stack.append(headNode.val) headNode = headNode.next for
i in range(len(stack)): print(stack.pop()) def revereList_Recursive(self, headNode): if headNode != None: if headNode.next != None: self.revereList_Recursive(headNode.next) print(headNode.val)