在 C++ 中以相反順序列印不可變連結串列
假設我們有一個不可變的連結串列,我們必須藉助以下介面以相反的順序打印出每個節點的所有值 −
ImmutableListNode − 這是不可變連結串列的介面,可以為我們提供列表的頭。
我們必須使用以下函式來訪問連結列表 −
ImmutableListNode.printValue() − 這將列印當前節點的值。
ImmutableListNode.getNext() − 這將返回下一個節點。
因此,如果列表類似於:[0, -4, -1, 3, -5],則輸出將為 [-5, 3, -1, -4, 0]
要解決此問題,我們將遵循以下步驟 −
為 ImmutableListNode 型別節點定義一個棧 st
在頭不為 null 的同時
將頭插入 st
頭 := 頭的下一個
在 st 不為空的同時
列印堆疊頂節點的值
從堆疊中刪除節點
示例(C++)
讓我們檢視以下實現,以獲得更好的理解 −
class Solution { public: void printLinkedListInReverse(ImmutableListNode* head) { stack <ImmutableListNode*> st; while(head){ st.push(head); head = head->getNext(); } while(!st.empty()){ st.top()->printValue(); st.pop(); } } };
輸入
[0,-4,-1,3,-5]
輸出
[-5,3,-1,-4,0]
廣告