在 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]

更新於: 31-3 月 -2020

391 次瀏覽

開啟你的 職業生涯

完成課程即可獲得認證

開始
廣告