在 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 次浏览

开启你的 职业生涯

完成课程即可获得认证

开始
广告