python-5. 從尾到頭列印連結串列
阿新 • • 發佈:2019-01-01
題目描述:
- 輸入一個連結串列的頭結點,從尾到頭反過來打印出每個結點的值。連結串列結點定義如下:
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)